Article ID: 38291
Article Last Modified on 7/5/2005
APPLIES TO
- Microsoft C/C++ Professional Development System 7.0
- Microsoft C Professional Development System 6.0a
- Microsoft C Professional Development System 6.0a
- Microsoft Visual C++ 1.0 Professional Edition
- Microsoft Visual C++ 1.5 Professional Edition
- Microsoft Visual C++ 1.0 Professional Edition
- Microsoft Visual C++ 2.0 Professional Edition
- Microsoft Visual C++ 4.0 Standard Edition
- Microsoft Visual C++ 5.0 Standard Edition
- Microsoft Visual C++ 6.0 Service Pack 5
This article was previously published under Q38291
SUMMARY
The 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:
Microsoft C/C++ for Windows NT, version 8.0, generates the following errors on the code shown below:
The Microsoft C/C++ compiler included with Visual C++, 32-bit edition, version 4.0, generates the following errors on the code shown below:
The Microsoft C/C++ compiler included with Visual C++, 32-bit edition, versions 5.0 and 6.0, generates the following errors on the code shown below:
Sample Code
The 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
Keywords: kbinfo kbcompiler KB38291