编译器限制
Cx51 编译器体现了下面列出的一些已知限制。在大多数情况下,对 C 语言的组件没有限制;例如,您可以在 switch 块中指定无限数量的符号或 case 语句。如果有足够的地址空间,则可以定义数千个符号。
- 最多支持对任何标准数据类型的 19 个间接级别(访问修饰符)。这包括数组描述符、间接运算符和函数描述符。
- 预处理器符号的长度最多为 255 个字符。所有 255 个字符都很重要。预处理器符号区分大小写。
- 名称的长度最多为 255 个字符。C 语言在函数和变量名称方面提供了区分大小写的功能。但是,出于兼容性原因,对象文件中的所有名称都以大写字母显示。因此,如果源程序中的外部对象名称是用大写字母或小写字母书写的,则无关紧要。
- switch 块中的最大 case 语句数不是固定的。限制仅由可用内存大小和单个函数的最大大小施加。
- 调用参数列表中嵌套函数调用的最大数量为 10。
- 嵌套包含文件的最大数量为 9。此值与列表文件、预处理器文件或是否要生成对象文件无关。
- 条件编译的最大指令深度为 20。这是预处理器的限制。
- 指令块 ({...}) 最多可以嵌套 15 级深。
- 宏最多可以嵌套 8 级深度。
- 在宏或函数调用中最多可以传递 32 个参数。
- 行或宏定义的最大长度为 65,535 个字符。即使在宏扩展之后,结果也不得超过 65,535 个字符