【问题标题】:How many variables can be in local scope本地范围内可以有多少个变量
【发布时间】:2021-02-23 16:27:00
【问题描述】:

我的问题很简单:在本地范围内可以正确翻译多少变量?

我必须创建一个从 C++ 到汇编的小型翻译器(用于学习目的)。在翻译过程中,有一个动态的标识符表(变量名,在简单的情况下,我想)。有多少个?

我的意思是,无论如何我的表也是动态的,但我需要创建一个令牌数组,每个令牌都有 2 个数字 - 一个表 ID 和一个表中的记录 ID。所以我想知道,这些 ID 应该是哪种类型 - intshortlong 等?

【问题讨论】:

  • 有趣。我相信不同的实现有不同的限制,我不确定标准是否说明了最低数量。
  • 本地范围内的变量数量可能不如运行时可用堆栈大小重要(为这些变量提供足够的存储空间)。
  • 动态数组作为“本地”变量似乎是不可能的,因为 C++ 没有提供运行时大小的数组。通过新的或通过 std::vector 或其他容器类型间接进行的动态分配正在使用堆而不是“本地”堆栈。
  • 克劳斯,你完全误解了我的问题)
  • 1.您应该用“@”添加我的名字,以便我收到通知! 2.如果你看到其他用户误解了这个问题,为什么不把它说清楚?伍德很高兴这样做!谢谢!

标签: c++ variables translation


【解决方案1】:

本地范围内可以有多少个变量

C++ 标准没有指定确切的最大数量。

它确实有以下建议(引用自最新标准草案):

[限制]

由于计算机是有限的,C++ 实现不可避免地受限于它们可以成功处理的程序的大小。 每个实施都应在已知的情况下记录这些限制。 本文档可能会引用存在的固定限制,说明如何根据可用资源计算可变限制,或者说固定限制不存在或未知。

这些限制可能会限制数量,包括以下描述的数量或其他数量。 建议将每个数量后面的括号中的数字作为该数量的最小值。 但是,这些数量仅供参考,并不能确定合规性。

  • 在一个块中声明了块范围的标识符 ([basic.scope.block]) [1'024]。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-06
    • 2013-02-13
    • 2014-07-26
    • 1970-01-01
    • 2015-09-30
    • 2018-04-07
    • 1970-01-01
    • 2013-05-07
    相关资源
    最近更新 更多