Implementation-Defined Behavior

Annex A of the ISO/IEC 14882-2003 C++ Standard lists compiler behaviors that are beyond the scope of the standard, but which must be documented for a compiler implementation. This annex also lists minimum guidelines for these behaviors, although a conforming compiler is not required to meet these minimums.

The CodeWarrior C++ compiler has these implementation quantities listed in the following table, based on the ISO/IEC 14882-2003 C++ Standard, Annex A.

Note: The term unlimited in in the following table means that a behavior is limited only by the processing speed or memory capacity of the computer on which the CodeWarrior C++ compiler is running.
Table 1. Implementation Quantities for C/C++ Compiler (ISO/IEC 14882-2003 C++, §A)
Behavior Standard Minimum Guideline CodeWarrior Limit
Nesting levels of compound statements, iteration control structures, and selection control structures 256 Unlimited
Nesting levels of conditional inclusion 256 256
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
Number of initial characters in an external identifier 1024 Unlimited
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 256
Arguments in one macro invocation 256 256
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 256
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 64 (adjustable upto 30000 using #pragma template_depth(<n>))
Handlers per try block 256 Unlimited
Throw specifications on a single function declaration 256 Unlimited