【问题标题】:What is the maximum number of local variables in a function that VC++ can allow?VC++ 允许的函数中局部变量的最大数量是多少?
【发布时间】:2013-06-10 03:52:42
【问题描述】:

这只是出于好奇。我在某处读到一个老笑话,其中提到了在函数中声明的大量变量,而 VC++ 编译器无法编译。

我认为这取决于用于保持变量引用的整数的大小,不是吗?还是不再是这种情况,您可以拥有任意数量的局部变量?

【问题讨论】:

  • 如果这是一个老笑话,那无疑是一个非常老的 Visual C++ 版本......
  • 可能是真的。这是关于一些工程师试图将 linux 代码移植到 VC++ 并因为编译器不允许在函数中包含超过几千个变量而陷入困境。

标签: c++ visual-c++ compiler-construction


【解决方案1】:

如果没有参考,很难知道最初的问题是什么,但看起来 Visual Studio 中的默认堆栈大小是 1 MB,但您可以使用 /F 设置它。这确实会限制您可以声明的局部变量的数量,这通常是当有人想要声明 really large array on the stack 时出现的问题。

【讨论】:

  • 感谢 Shafik 的回答,尽管我的问题是关于变量的数量,而不是堆栈上的总内存。这听起来可能很奇怪,但这就是笑话的重点......
  • @mGamma 好吧,如果你有很多参数要传递给一个函数,它们也会最终出现在堆栈中,所以这也会产生影响:unixwiz.net/techtips/win32-callconv.html
  • 让我换一种说法。如果我有一个占用一点内存的类型,并且我在函数中声明了一百万个该类型的变量(不是数组,每个单独的变量都声明了不同的名称),那么 vc++ 编译器(或任何编译器) 允许它 ?假设:有足够的堆栈空间(即> = 1 MB)我知道这是一种人为的情况,但正如我所提到的,这只是出于好奇。再次感谢您的回复。
  • @mGamma 标准中规定的最小值为 256:stackoverflow.com/questions/4582012/…,MS 似乎至少在我能找到的最早期符合:msdn.microsoft.com/en-us/library/ft39hh4x(v=vs.71).aspx
猜你喜欢
  • 2012-08-28
  • 1970-01-01
  • 1970-01-01
  • 2015-12-13
  • 2015-07-30
  • 1970-01-01
  • 2018-09-23
  • 2020-10-06
  • 2012-05-31
相关资源
最近更新 更多