I'm compiling a module which issues a #warning statement. It's a warning that I could safely ignore. At least, I should be able to ignore it except that VC8 insists on converting it to error C1021 which is a fatal error and stops compilation. The actual line looks something like this:-

Code:

#warning The warning message

It makes no difference what the message says. I've tried several different messages but they all get converted to error C1021. It almost looks as if my compiler doesn't realise that #warning is a valid pre-processor statement. And yet, according to this MSDN entry#warning has been valid since at least VC6.

I've tried opening the project's properties and selecting different warning levels but none of the settings made any difference. Is there something I need to do to tell the compiler that #warning isn't an error condition?

At the end of the day I could just comment the line out but I'd prefer to understand why it's not working.

July 30th, 2013, 04:36 AM

VictorN

Re: #warning

John, did you use #warning or #pragma warning?
The former looks like "invalid preprocessor command" (error C1021). The latter should be the correct one.

July 30th, 2013, 05:12 AM

S_M_A

Re: #warning

That MSDN link doesn't say anything about other VC versions and normally they do.
Also note that the #warning statement is in the J++ section :confused:. Maybe it was a mistake that it worked in VC 6 and it's "fixed" in later releases? Unfortunately I don't have VC 6 installed so I can't try it but maybe you can?

July 30th, 2013, 05:25 AM

VictorN

Re: #warning

Well, I've just tested with

Code:

#warning "www"

in VC++6.0 (with SP6)
First, the "#warning" is not recognized as a valid directive: it is not colored blue, it remainf black.
Second, the error is displayed: