Microsoft KB Archive/72793

= INFO: C Ignores Preprocessor Directives Inside of Comments =

Q72793

-

The information in this article applies to:


 * The Microsoft C/C++ Compiler (CL.EXE)
 * Microsoft C for MS-DOS, versions 6.0, 6.0a, 6.0ax
 * Microsoft C for OS/2, versions 6.0, 6.0a
 * Microsoft C/C++ for MS-DOS, version 7.0
 * Microsoft Visual C++ for Windows, 16-bit edition, versions 1.0, 1.5, 1.51
 * Microsoft Visual C++, 32-bit Editions, versions 1.0, 2.0, 2.1, 4.0, 5.0

-

SUMMARY
If a preprocessor directive is contained in a comment, the Microsoft C compiler may generate a message similar to the following:

fatal error C1004: unexpected end-of-file found

The exact error depends upon which directive is actually placed in the comment.

MORE INFORMATION
This is the expected behavior. The message is generated because the compiler evaluates comments before preprocessor directives, thereby ignoring a preprocessor directive within a comment block.

The sample code below illustrates this situation. The #endif directive is inside of a comment because the first comment is missing a closing comment delimiter (*/). The compiler generates a C1004 error when it reaches the end of the file and has not encountered an #endif directive to match the #if directive.

Sample Code
/* Compile options needed: none

void main { /* comment begins but doesn't end printf (&quot;here 0\n&quot;); /* comment */ printf (&quot;here 2\n&quot;); } Additional query words: 8.00 8.00c 9.00 9.10
 * 1) if 0
 * 1) endif

Keywords : kbcode kbCompiler kbVC100 kbVC150 kbVC151 kbVC200 kbVC210 kbVC400 kbVC500

Issue type : kbinfo

Technology :

Last Reviewed: July 30, 2001

-

[mailto:MSDN@MICROSOFT.COM Send feedback to Microsoft]

© 2002 Microsoft Corporation. All rights reserved.