INFO: C Ignores Preprocessor Directives Inside of Comments
ID: 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 ()
{
#if 0
/* comment begins but doesn't end
printf ("here 0\n");
#endif
/* comment */
printf ("here 2\n");
}
Additional query words:
8.00 8.00c 9.00 9.10
Keywords : kbcode kbCompiler kbVC100 kbVC150 kbVC151 kbVC200 kbVC210 kbVC400 kbVC500
Version : MS-DOS:6.0,6.00a,6.00ax,7.0; OS/2:6.0,6.00a; WINDOWS:1.0,1.5,1.51; WINDOWS NT:1.0,2.0,2.1,4.0,5.0
Platform : MS-DOS NT OS/2 WINDOWS
Issue type : kbinfo
|