3.7.1. Draft Standard Limits

The Draft C++ Standard standard recommends certain minimum limits that a conforming compiler should accept. You should be aware of these when porting applications between compilers. A summary is given in Table 3.10. A limit of mem indicates that no limit is imposed by the ARM compilers, other than that imposed by the availability of memory.

Table 3.10. Implementation limits

DescriptionRecommendedARM
Nesting levels of compound statements, iteration control structures, and selection control structures.256mem
Nesting levels of conditional inclusion.256mem
Pointer, array, and function declarators (in any combination) modifying an arithmetic, structure, union, or incomplete type in a declaration.256mem
Nesting levels of parenthesized expressions within a full expression.256mem
Number of initial characters in an internal identifier or macro name.1024mem
Number of initial characters in an external identifier.1024mem
External identifiers in one translation unit.65536mem
Identifiers with block scope declared in one block.1024mem
Macro identifiers simultaneously defined in one translation unit.65536mem
Parameters in one function declaration. Note that overload resolution is sensitive to the first 32 arguments only.256mem
Arguments in one function call. Note that overload resolution is sensitive to the first 32 arguments only.256mem
Parameters in one macro definition.256mem
Arguments in one macro invocation.256mem
Characters in one logical source line.65536mem
Characters in a character string literal or wide string literal after concatenation.65536mem
Size of a C++ object.2621448388607
Nesting levels of #include file.256mem
Case labels for a switch statement, excluding those for any nested switch statements.16384mem
Data members in a single class, structure, or union.16384mem
Enumeration constants in a single enumeration.4096mem
Levels of nested class, structure, or union definitions in a single struct-declaration-list.256mem
Functions registered by atexit().3233
Direct and indirect base classes16384mem
Direct base classes for a single class1024mem
Members declared in a single class4096mem
Final overriding virtual functions in a class, accessible or not16384mem
Direct and indirect virtual bases of a class1024mem
Static members of a class1024mem
Friend declarations in a class4096mem
Access control declarations in a class4096mem
Member initializers in a constructor definition6144mem
Scope qualifications of one identifier256mem
Nested external specifications1024mem
Template arguments in a template declaration1024mem
Recursively nested template instantiations17mem
Handlers per try block256mem
Throw specifications on a single function declaration256mem
Copyright © 1997, 1998 ARM Limited. All rights reserved.ARM DUI 0041C