我只是想知道为什么这在 Clang 4.0 中有效:
unsigned cnt = 42;
int k[cnt];
但这不会:
unsigned cnt = 42;
string bad[cnt];
我刚刚查看了 C++ primer 第 5 版。它说:
the dimension must be known at compile time, which means that the dimension must be a constant expression
如果这是真的,为什么 int k[cnt];
可以工作?
最佳答案
这两个代码片段都不适用于 C++。
但是,在 C 中,可以使用非常量表达式作为数组大小。一些编译器(例如,没有 -pedantic
选项的 GCC)支持 C++ 代码中的 C 特性。
至于元素类型之间的区别,它是特定于编译器的。 GCC 编译两者。在这种情况下,clang++ 禁止使用非 POD 类型(例如 std::string
)。
关于c++ - 在 C++ 中使用变量作为数组的维度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14794760/