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.
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 |