我试图在 C++ 中声明一个 int
数组并发现了这个问题。以下代码在 g++ 编译器上运行良好,但在 Visual Studio 上编译失败。我跟踪 Bruce Eckel 并找到了这段代码。
#include<iostream>
int main()
{
const int j = std::cin.get();
char buf[j];
}
让 j
只是一个 int
会是个问题,据我所知。由于 j
的值在运行时将是 const,因此程序应该被编译。如果我有任何错误,请纠正我。
最佳答案
Since the value of
j
would beconst
during the run-time, the program should get compiled.
不,j
的const
特性与这里无关。 C++ 目前仅支持静态大小的 C 数组。它的大小必须是一个编译时常量。
如果你想要一个动态大小的数组,使用std::vector
。
默认情况下 g++ 编译这个的事实有点不幸(为了兼容性)。您应该在使用 g++ 时使用 -pedantic
标志以确保不启用此类编译器扩展(当然使用编译器扩展本身并不坏,但在这种情况下并没有任何优势) .
关于c++ - 使用 const integer 声明数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18919647/