A compilation problem: is it an error?

Hi,
I have a little demo (see the source at the end)
which (when interpreted) produces the output

root [2] .U Mydemo.c
root [3] .L Mydemo.c
root [4] mydemo()
1:(2 tokens) =116.45 17243
token #0 @2629978
Error: C++ exception caught FILE:F:\root\tutorials\Mydemo.c LINE:25
(const int)19
*** Interpreter error recovered ***

Although I do not know why the exception occurs, this is another thread,
I accept it runs correctly. Now I try to compile it.
It displays a fatal include error (WHY?)
and misses an include file (Do I need it? Is it really missing?)
then runs the application (What app if it is not compiled?)
with the same result as in interpreted mode.
What is that I am missing?

Thanks

Janos

root [5] .x mydemo.C++
C.dllin TWinNTSystem::ACLiC: creating shared library F:\root\tutorials\mydemo_
s214.1_cint.cxx
s214.3_cint.cxx
s214.5_cint.cxx
s214.7_cint.cxx
svk_.cxx
F:\root\tutorials\svk_.h(7) : fatal error C1083: Cannot open include file: ‘stdd
ef.h’: No such file or directory
Error in : Compilation failed!
1:(2 tokens) =116.45 17243
token #0 @261d240
Error: C++ exception caught FILE:F:\root\tutorials\Mydemo.c LINE:25
(const int)19
*** Interpreter error recovered ***
root [6]

The source:

#include “Riostream.h”
#include “TCanvas.h”
#include “TGraph.h”
#include “TString.h"
Double_t *x;
Double_t *y;
void ReadFile(const char FileName)
{
Int_t Index = 0; char buf[500]; char delimiters[] = " \t\n;";
ifstream stream(FileName);
bool FD = false; // assume failure
do {stream.getline(buf,sizeof(buf)); ++Index;
}
while (!stream.eof()); --Index; //Count total# of lines
{
ifstream stream(FileName);
TString token;
for(int i = 1; i<10; i++)
{
token.ReadLine(stream);
TObjArray
Strings = token.Tokenize(delimiters);
printf(”%i:(%i tokens) =%s\n",i, Strings->GetEntriesFast(), token.Data());
if(Strings->GetEntriesFast())
{
for(int j = 0; j< Strings->GetEntriesFast(); j++)
{
TString T = (TString) Strings[j];
printf(“token #%d @%x =’%s’\n”,j, T, T->Data());
// printf(“token #%d=\n%i’%s’\n”,j,T->Data()[0], T->Data());
// printf(“token #%d: length =%d, token =’%s’\n”,j,T->Length(),T->Data());
}
}
token.ReadToken(stream);
printf("%d=%s\n",i,token.Data());
token.ReadToken(stream);
printf("%d=%s\n",i,token.Data());
Strings->Delete();
}
printf(“File ended OK\n”);
}
printf(“ReadFile: %s contains %d lines\n”,FileName, Index);
}

void mydemo()
{
TCanvas c1 = new TCanvas(“c1”,“A Simple Graph Example”,200,10,700,500);
ReadFile(“Si_1s_3000.dat”);
x = new Double_t[100];
y = new Double_t[100];
for(Int_t i=0; i<100; i++)
{
x[i] = i;
y[i] = i
i;
}
TGraph G1 = new TGraph( 100, x, y);
G1->Draw("AC
");
}

This problem and the solution are the same as this other post.
The problem is in the user code not in CINT.