Microsoft KB Archive/61314

= INFO: The Limit of Macro Expansion =

Article ID: 61314

Article Last Modified on 7/5/2005

-

APPLIES TO


 * Microsoft C Professional Development System 6.0
 * Microsoft C Professional Development System 6.0a
 * Microsoft C Professional Development System 6.0a
 * Microsoft C Professional Development System 5.1
 * Microsoft C Professional Development System 6.0
 * Microsoft C Professional Development System 6.0a
 * Microsoft C/C++ Professional Development System 7.0
 * Microsoft Visual C++ 1.0 Professional Edition
 * Microsoft Visual C++ 1.5 Professional Edition
 * Microsoft Visual C++ 1.51
 * Microsoft Visual C++ 2.0 Professional Edition
 * Microsoft Visual C++ 2.1

-



This article was previously published under Q61314



SUMMARY
In Microsoft C and Visual C++, the limit of a preprocessor macro expansion can be no more than 6K when it is FULLY expanded. Similarly, actual arguments plus FULLY expanded actual arguments are not allowed to exceed 6K during a single macro expansion. Note that this is not the same as saying that the macro DEFINITIONS must be 6K or less. The 6K limitation was chosen because the buffer used for expansion is dynamically allocated, and 6K seems to be a reasonable limit for most real programs.

Additionally, there is a nesting DEPTH limit in C versions 6.0 and below of 64 on macros in C1.EXE, and 256 in C1L.EXE. The nesting limit for C 7.0 and Visual C++ 1.0 is 255. This may be noticed only if you are writing macros for some relocatable indexing scheme, such as in the following example: #define INCOME 1; #define EXPENSE (INCOME+1) #define GINCOME (EXPENSE+1) #define TAXES (GINCOME+1) #define NINCOME (TAXES+1) and so on.

Additional query words: 8.00 8.00c 9.00 9.10

Keywords: kbinfo kbcompiler KB61314

-

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

© Microsoft Corporation. All rights reserved.