我的问题很简单:局部作用域中可以有多少变量被正确翻译?
我需要创建一个小型的翻译器(供学习目的),将C++语言翻译成汇编语言。在翻译过程中,会有一个标识符动态表格(在简单情况下指变量名)。这个表格最多能放多少个元素呢?
我的表格也是动态的,但我需要创建一个标记数组,每个标记都有两个数字 - 表格ID和表格中的记录ID。所以我想知道,这些ID应该使用哪种类型 - int
,short
,long
或其他类型?
我的问题很简单:局部作用域中可以有多少变量被正确翻译?
我需要创建一个小型的翻译器(供学习目的),将C++语言翻译成汇编语言。在翻译过程中,会有一个标识符动态表格(在简单情况下指变量名)。这个表格最多能放多少个元素呢?
我的表格也是动态的,但我需要创建一个标记数组,每个标记都有两个数字 - 表格ID和表格中的记录ID。所以我想知道,这些ID应该使用哪种类型 - int
,short
,long
或其他类型?
本地作用域中可以有多少变量?
C++标准没有明确的最大数量规定。
它提供了以下建议(引自最新标准草案):
[implimits]
由于计算机是有限的,C++实现在能够成功处理的程序大小方面必然存在限制。 每个实现都应该记录那些已知的限制。 此文档可能引用固定限制(如果存在),说明如何根据可用资源计算变量限制,或说明固定限制不存在或未知。
这些限制可能会约束包括下面描述的或其他一些数量。 跟随每个数量的括号数字被推荐作为该数量的最小值。 然而,这些数量只是指导方针,不确定是否符合规范。
- 在一个块中声明的具有块作用域的标识符([basic.scope.block]) [1'024]。
有人为此编写了一个测试,并且通常使用的编译器似乎至少支持8k:https://github.com/fritzone/cpp-stresstest