本地作用域中可以有多少个变量?

5

我的问题很简单:局部作用域中可以有多少变量被正确翻译?

我需要创建一个小型的翻译器(供学习目的),将C++语言翻译成汇编语言。在翻译过程中,会有一个标识符动态表格(在简单情况下指变量名)。这个表格最多能放多少个元素呢?

我的表格也是动态的,但我需要创建一个标记数组,每个标记都有两个数字 - 表格ID和表格中的记录ID。所以我想知道,这些ID应该使用哪种类型 - intshortlong或其他类型?


有趣。我相信不同的实现有不同的限制,而且我不确定标准是否对最小数量有所规定。 - Ted Lyngmo
1
本地作用域中的变量数量可能并不像运行时可用堆栈大小(为这些变量提供足够的存储空间)那样关键。 - Scheff's Cat
1
似乎在C++中,将动态数组作为“本地”变量是不可能的,因为C++没有提供运行时大小的数组。通过new进行动态分配或间接使用std::vector或其他容器类型使用堆而不是“本地”栈。 - Klaus
Klaus,你完全误解了我的问题) - Notrum666
3
  1. 请在我的名字前加上 "@",这样我才能收到通知!
  2. 如果你发现其他用户误解了问题,为什么不让问题更清晰呢?这样做会很好!谢谢!
- Klaus
1个回答

10

本地作用域中可以有多少变量?

C++标准没有明确的最大数量规定。

它提供了以下建议(引自最新标准草案):

[implimits]

由于计算机是有限的,C++实现在能够成功处理的程序大小方面必然存在限制。 每个实现都应该记录那些已知的限制。 此文档可能引用固定限制(如果存在),说明如何根据可用资源计算变量限制,或说明固定限制不存在或未知。

这些限制可能会约束包括下面描述的或其他一些数量。 跟随每个数量的括号数字被推荐作为该数量的最小值。 然而,这些数量只是指导方针,不确定是否符合规范。

  • 在一个块中声明的具有块作用域的标识符([basic.scope.block]) [1'024]。

有人为此编写了一个测试,并且通常使用的编译器似乎至少支持8k:https://github.com/fritzone/cpp-stresstest


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接