INFO: Cannot Define Other Preprocessor Directives with #defineLast reviewed: October 1, 1997Article ID: Q38291 |
The information in this article applies to:
SUMMARYThe Microsoft C Compiler does not allow a "#define" statement to define another preprocessor directive. Although the preprocessor output option (/P or /E) generates the desired expansion, the Microsoft C Compiler generates the following error messages when compiling the code below:
error C2014: preprocessor command must start as first non-whitespace error C2054: expected '(' to follow 'define' error C2061: syntax error : identifier 'MAX'Microsoft C/C++ for Windows NT, version 8.0, generates the following errors on the code shown below:
error C2014: preprocessor command must start as first nonwhite space error C2065: 'MAX' : undeclared identifier error C2057: expected constant expressionThe Microsoft C/C++ compiler included with Visual C++, 32-bit edition, version 4.0, generates the following errors on the code shown below:
error C2121: '#' : invalid character : possibly the result of amacro expansion error C2282: 'define' is followed by 'MAX' (missing ','?) Sample CodeThe following code demonstrates the problem:
/* Compile options needed: none */ #define A( x ) x##define MAX 100 A( # ) /* Preprocessor output expands A( # ) to be: #define MAX 100 */ char w[ MAX ]; void main(void); void main() { w[ 0 ] = w[ MAX ]; } |
Additional query words: 8.00 8.00c 9.00
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |