Compiler Limits
The C++ standard recommends limits for various language constructs. The following is a list of constructs where the Visual C++ compiler does not implement the recommended limits. The first number is the recommended limit and the second number is the limit implemented by Visual C++:
Nesting levels of compound statements, iteration control structures, and selection control structures [256] (64).
Parameters in one macro definition [256] (127).
Arguments in one macro invocation [256] (127).
Characters in a character string literal or wide string literal (after concatenation) [65536] (65535).
Levels of nested class, structure, or union definitions in a single struct-declaration-list [256] (16).
Member initializers in a constructor definition [6144] (approximately 600, memory dependent, can increase with the /Zm compiler option).
Scope qualifications of one identifier [256] (127).
Nested external specifications [1024] (10).
Template arguments in a template declaration [1024] (64).