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. Table D.1 gives a summary of these limits.

In this table, a limit of memory indicates that the ARM compiler imposes no limit, 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.1 024memory
Number of initial characters in an external identifier.1 024memory
External identifiers in one translation unit.65 536memory
Identifiers with block scope declared in one block.1 024memory
Macro identifiers simultaneously defined in one translation unit.65 536memory
Parameters in one function declaration.256memory
Arguments in one function call.256memory
Parameters in one macro definition.256memory
Arguments in one macro invocation.256memory
Characters in one logical source line.65 536memory
Characters in a character string literal or wide string literal after concatenation.65 536memory
Size of a C or C++ object (including arrays).262 1444 294 967 296
Nesting levels of #include file.256memory
Case labels for a switch statement, excluding those for any nested switch statements.16 384memory
Data members in a single class, structure, or union.16 384memory
Enumeration constants in a single enumeration.4 096memory
Levels of nested class, structure, or union definitions in a single struct declaration-list.256memory
Functions registered by atexit().3233
Direct and indirect base classes.16 384memory
Direct base classes for a single class.1 024memory
Members declared in a single class.4 096memory
Final overriding virtual functions in a class, accessible or not.16 384memory
Direct and indirect virtual bases of a class.1 024memory
Static members of a class.1 024memory
Friend declarations in a class.4 096memory
Access control declarations in a class.4 096memory
Member initializers in a constructor definition.6 144memory
Scope qualifications of one identifier.256memory
Nested external specifications.1 024memory
Template arguments in a template declaration.1 024memory
Recursively nested template instantiations.17memory
Handlers per try block.256memory
Throw specifications on a single function declaration.256memory

Copyright © 2007, 2010 ARM Limited. All rights reserved.ARM DUI 0348A
Non-Confidential