D.1. C++ ISO/IEC standard limits

The ISO/IEC C++ standard recommends minimum limits that a conforming compiler must accept. You must be aware of these when porting applications between compilers. A summary is given in Table D.1. A limit of memory indicates that no limit is imposed by the ARM compilers, other than that imposed by the available memory.

Table D.1. Implementation limits

DescriptionRecommended ARM
Nesting levels of compound statements, iteration control structures, and selection control structures.256memory
Nesting levels of conditional inclusion.256memory
Pointer, array, and function declarators (in any combination) modifying an arithmetic, structure, union, or incomplete type in a declaration.256memory
Nesting levels of parenthesized expressions within a full expression.256memory
Number of initial characters in an internal identifier or macro name.10241024
Number of initial characters in an external identifier.10241024
External identifiers in one translation unit.65536memory
Identifiers with block scope declared in one block.1024memory
Macro identifiers simultaneously defined in one translation unit.65536memory
Parameters in one function declaration. Overload resolution is sensitive to the first 32 arguments only.256memory
Arguments in one function call. Overload resolution is sensitive to the first 32 arguments only.256memory
Parameters in one macro definition.256memory
Arguments in one macro invocation.256memory
Characters in one logical source line.65536memory
Characters in a character string literal or wide string literal after concatenation.65536memory
Size of a C or C++ object (including arrays)262144268435454
Nesting levels of #include file.256memory
Case labels for a switch statement, excluding those for any nested switch statements.16384memory
Data members in a single class, structure, or union.16384memory
Enumeration constants in a single enumeration.4096memory
Levels of nested class, structure, or union definitions in a single struct-declaration-list.256memory
Functions registered by atexit().3233
Direct and indirect base classes16384memory
Direct base classes for a single class1024memory
Members declared in a single class4096memory
Final overriding virtual functions in a class, accessible or not16384memory
Direct and indirect virtual bases of a class1024memory
Static members of a class1024memory
Friend declarations in a class4096memory
Access control declarations in a class4096memory
Member initializers in a constructor definition6144memory
Scope qualifications of one identifier256memory
Nested external specifications1024memory
Template arguments in a template declaration1024memory
Recursively nested template instantiations17memory
Handlers per try block256memory
Throw specifications on a single function declaration256memory
Copyright © 1999-2001 ARM Limited. All rights reserved.ARM DUI 0067D
Non-Confidential