Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > This is a wrong code.I just want to know how it affect the compiler,becausethe error message is quite strange.

Reply
Thread Tools

This is a wrong code.I just want to know how it affect the compiler,becausethe error message is quite strange.

 
 
Guest
Posts: n/a
 
      10-18-2008

today I forgot to include some header,then I found the error message by the compiler is quite strange.

so I want to know exactly the inner details of the compiler impletation,if possible.

and I want to know what does the standard say about this situation.


here is the code just to demonstrate the error.


int main()
{
new int; // this is OK
new someClass; // yeah,I know this is wrong because someClass is not declared.

return 0;
}

the Visual C++ 6.0 compiler said:

D:\test1\test1.cpp(12) : error C2061: syntax error : identifier 'someClass'
D:\test1\test1.cpp(15) : error C2143: syntax error : missing ';' before '}'
D:\test1\test1.cpp(15) : error C2143: syntax error : missing ';' before '}'
....
D:\test1\test1.cpp(15) : fatal error C1003: error count exceeds 100; stopping compilation


where the "..." represent 97 messages of "error C2143: syntax error : missing ';' before '}' "

so I guess something made the compiler drop into a infinitive recursion .

but I dont know why.

please tell me if you just know the reason.

if you dont have time,just ignore this.

thanks very much.
 
Reply With Quote
 
 
 
 
Erik Wikström
Guest
Posts: n/a
 
      10-18-2008
On 2008-10-18 16:17, 书呆* wrote:
> today I forgot to include some header,then I found the error message by the compiler is quite strange.
>
> so I want to know exactly the inner details of the compiler impletation,if possible.
>
> and I want to know what does the standard say about this situation.
>
>
> here is the code just to demonstrate the error.
>
>
> int main()
> {
> new int; // this is OK
> new someClass; // yeah,I know this is wrong because someClass is not declared.
>
> return 0;
> }
>
> the Visual C++ 6.0 compiler said:
>
> D:\test1\test1.cpp(12) : error C2061: syntax error : identifier 'someClass'
> D:\test1\test1.cpp(15) : error C2143: syntax error : missing ';' before '}'
> D:\test1\test1.cpp(15) : error C2143: syntax error : missing ';' before '}'
> ...
> D:\test1\test1.cpp(15) : fatal error C1003: error count exceeds 100; stopping compilation
>
>
> where the "..." represent 97 messages of "error C2143: syntax error : missing ';' before '}' "
>
> so I guess something made the compiler drop into a infinitive recursion .
>
> but I dont know why.


Because VC++ 6 is old and buggy and I would not use unless I had no
other choice. A more recent version of the compiler only emits one error
message.

--
Erik Wikström
 
Reply With Quote
 
 
 
 
书呆彭
Guest
Posts: n/a
 
      10-18-2008
Erik Wikström 写道:

>
> Because VC++ 6 is old and buggy and I would not use unless I had no
> other choice. A more recent version of the compiler only emits one error
> message.
>


Then is that message " error C2143: syntax error : missing ';' before '}' "

 
Reply With Quote
 
Erik Wikström
Guest
Posts: n/a
 
      10-18-2008
On 2008-10-18 17:47, 书呆* wrote:
> Erik Wikström 写道:
>
>>
>> Because VC++ 6 is old and buggy and I would not use unless I had no
>> other choice. A more recent version of the compiler only emits one error
>> message.
>>

>
> Then is that message " error C2143: syntax error : missing ';' before '}' "


As a rule, you can only trust the first error message a compiler (any
compiler) emits, all after might be the result of the compiler being
thrown of by the first error.

--
Erik Wikström
 
Reply With Quote
 
书呆彭
Guest
Posts: n/a
 
      10-18-2008
Erik Wikström 写道:
> On 2008-10-18 17:47, 书呆* wrote:
>> Erik Wikström 写道:
>>
>>> Because VC++ 6 is old and buggy and I would not use unless I had no
>>> other choice. A more recent version of the compiler only emits one error
>>> message.
>>>

>> Then is that message " error C2143: syntax error : missing ';' before '}' "

>
> As a rule, you can only trust the first error message a compiler (any
> compiler) emits, all after might be the result of the compiler being
> thrown of by the first error.
>


I very appreciate your help.
I got it.
Thank you again.
 
Reply With Quote
 
Juha Nieminen
Guest
Posts: n/a
 
      10-19-2008
Erik Wikström wrote:
> As a rule, you can only trust the first error message a compiler (any
> compiler) emits, all after might be the result of the compiler being
> thrown of by the first error.


Which raises the question: Why do compilers bother with the rest of
the errors? Why not just stop with the first error?
 
Reply With Quote
 
Erik Wikström
Guest
Posts: n/a
 
      10-19-2008
On 2008-10-19 12:04, Juha Nieminen wrote:
> Erik Wikström wrote:
>> As a rule, you can only trust the first error message a compiler (any
>> compiler) emits, all after might be the result of the compiler being
>> thrown of by the first error.

>
> Which raises the question: Why do compilers bother with the rest of
> the errors? Why not just stop with the first error?


Because sometimes they are reliable and fixing more than one error
between recompiles is nice. After using a compiler for some time you can
generally tell which errors are due to earlier errors and which are
genuine errors.

--
Erik Wikström
 
Reply With Quote
 
James Kanze
Guest
Posts: n/a
 
      10-19-2008
On Oct 19, 12:26*pm, Erik Wikstrm <(E-Mail Removed)> wrote:
> On 2008-10-19 12:04, Juha Nieminen wrote:


> > Erik Wikstrm wrote:
> >> As a rule, you can only trust the first error message a
> >> compiler (any compiler) emits, all after might be the
> >> result of the compiler being thrown of by the first error.


> > Which raises the question: Why do compilers bother with the
> > rest of the errors? Why not just stop with the first error?


Would you use such a compiler?

> Because sometimes they are reliable and fixing more than one
> error between recompiles is nice. After using a compiler for
> some time you can generally tell which errors are due to
> earlier errors and which are genuine errors.


Resynchronizing after an error is one of the most difficult
things in compiler construction; you want to absorb (and throw
out) enough input to avoid follow-up errors, but you don't want
to miss any real errors after the detected error. In this case,
the compiler was obviously not throwing out enough, keeping both
the partially parsed new expression, and the next token. In the
end, the only thing that stopped it was a hard wired maximum
number of errors. (Most compilers do this as well, as a safety
net. After all, what's the use of going on if the actual error
was that you fed an Ada program to the C++ compiler?)

--
James Kanze (GABI Software) email:(E-Mail Removed)
Conseils en informatique oriente objet/
Beratung in objektorientierter Datenverarbeitung
9 place Smard, 78210 St.-Cyr-l'cole, France, +33 (0)1 30 23 00 34
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: How include a large array? Edward A. Falk C Programming 1 04-04-2013 08:07 PM
I don't quite understand a "static context" error message Dan Java 5 08-23-2007 05:14 AM
onBeforeUnload doesn't work quite the way I want it too Richard \(MrBonus\) Javascript 1 09-07-2004 04:52 PM
LOOK! i just want to know does anyone know... Simon Egginton Javascript 3 07-26-2004 08:11 PM
Anyone want a higher performance not-quite-so BigInteger pete kirkham Java 5 08-13-2003 10:32 PM



Advertisments