D.1. C++ ISO/IEC 标准限制

ISO/IEC C++ 标准推荐了符合标准的编译器必须接受的最低限制。 在编译器之间移植应用程序时,一定要注意这些限制。Table D.1 简要说明了这些限制。

在该表中,内存的限制指示 ARM 编译器没有施加任何限制,可用内存施加的限制除外。

Table D.1. 实现限制

说明 推荐 ARM
复合语句、迭代控制结构和选择控制结构的嵌套层数。 256 内存
条件包含的嵌套层数。 256 内存
修改声明中的算法、结构、联合或不完整类型的指针、数组和函数声明符个数(任意组合)。 256 内存
完整表达式中的括号表达式的嵌套层数。 256 内存
内部标识符或宏名中的初始字符数。 1 024 内存
外部标识符中的初始字符数。 1 024 内存
一个转换单元中的外部标识符数。 65 536 内存
在一个块中声明的具有块范围的标识符数。 1 024 内存
在一个转换单元中同时定义的宏标识符数。 65 536 内存
一个函数声明中的参数个数。 256 内存
一个函数调用中的自变量个数。 256 内存
一个宏定义中的参数个数。 256 内存
一个宏调用中的自变量个数。 256 内存
一行逻辑源代码中的字符数。 65 536 内存
字符串文字或连接后生成的宽字符串文字中的字符数。 65 536 内存
C 或 C++ 对象(包括数组)的大小。 262 144 4 294 967 296
#include 文件的嵌套层数。 256 内存
switch 语句的 case 标签数,不包括任何嵌套 switch 语句的 case 标签。 16 384 内存
单个类、结构或联合中的数据成员数。 16 384 内存
单个枚举中的枚举常数个数。 4 096 内存
单个 struct 声明列表中的嵌套类、结构或联合定义层数。 256 内存
atexit() 注册的函数个数。 32 33
直接和间接基类数。 16 384 内存
单个类的直接基类数。 1 024 内存
在单个类中声明的成员数。 4 096 内存
类中的最终覆盖虚拟函数个数(包括可访问和无法访问的函数)。 16 384 内存
类的直接和间接虚拟基址数。 1 024 内存
类的静态成员数。 1 024 内存
类的友元声明数。 4 096 内存
类中的访问控制声明数。 4 096 内存
构造函数定义中的成员初始值设定项数。 6 144 内存
一个标识符的范围限定数。 256 内存
嵌套的外部说明数。 1 024 内存
模板声明中的模板自变量个数。 1 024 内存
递归嵌套的模板实例化次数。 17 内存
每个测试块的处理程序数。 256 内存
单个函数声明中的抛出说明数。 256 内存
Copyright © 2007 ARM Limited. All rights reserved. ARM DUI 0348AC
Non-Confidential