### Implementation Quantities

The C/C++ compiler has the implementation quantities listed in Table 1, based on the ISO C++ Standard. Although the values in the right-side column are the recommended minimums for each quantity, they do not determine the compliance of the quantity.

NOTE The right-side column value “unlimited” means unlimited only up to and including memory and time limitations.

##### Table 1. Implementation Quantities for the C/C++ Compiler

Quantity | Minimum
--- | ---
Nesting levels of compound statements, iteration control structures, and selection control structures [256] | Unlimited
Nesting levels of conditional inclusion [256] | 32
Pointer, array, and function declarators (in any combination) modifying an arithmetic, structure, union, or incomplete type in a declaration [256] | Unlimited
Nesting levels of parenthesized expressions within a full expression [256] | Unlimited
Number of initial characters in an internal identifier or macro name [1024] | Unlimited (255 significant in identifiers)
Number of initial characters in an external identifier [1024] | Unlimited (255 significant in identifiers)
External identifiers in one translation unit [65536] | Unlimited
Identifiers with block scope declared in one block [1024] | Unlimited
Macro identifiers simultaneously defined in one translation unit [65536] | Unlimited
Parameters in one function definition [256] | Unlimited
Arguments in one function call [256] | Unlimited
Parameters in one macro definition [256] | 128
Arguments in one macro invocation [256] | 128
Characters in one logical source line [65536] | Unlimited
Characters in a character string literal or wide string literal (after concatenation) [65536] | Unlimited
Size of an object [262144] | 2 GB
Nesting levels for #include files [256] | 32
Case labels for a switch statement (excluding those for any nested switch statements) [16384] | Unlimited
Data members in a single class, structure, or union [16384] | Unlimited
Enumeration constants in a single enumeration [4096] | Unlimited
Levels of nested class, structure, or union definitions in a single struct-declaration-list [256] | Unlimited
Functions registered by atexit()[32] | 64
Direct and indirect base classes [16384] | Unlimited
Direct base classes for a single class [1024] | Unlimited
Members declared in a single class [4096] | Unlimited
Final overriding virtual functions in a class, accessible or not [16384] | Unlimited
Direct and indirect virtual bases of a class [1024] | Unlimited
Static members of a class [1024] | Unlimited
Friend declarations in a class [4096] | Unlimited
Access control declarations in a class [4096] | Unlimited
Member initializers in a constructor definition [6144] | Unlimited
Scope qualifications of one identifier [256] | Unlimited
Nested external specifications [1024] | Unlimited
Template arguments in a template declaration [1024] | Unlimited
Recursively nested template instantiations [17] | Unlimited
Handlers per try block [256] | Unlimited
Throw specifications on a single function declaration [256] | Unlimited