c++ - 在 C++ 中使用变量作为数组的维度?

标签 c++ arrays c++11 dimension

我只是想知道为什么这在 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/

相关文章:

c++ - 有没有办法在 C++17 中折叠初始化列表

c++ - 在没有数学库的情况下,如何在 C++ 中创建复利公式?

python - 在一个numpy数组中相乘

c++ - "return {...}; "在 C++11 中如何工作?

c++ - 不能将 std::iota 与 std::set 一起使用

c++ - 搜索具有最小矩形长度和的一组点。算法是什么?

c++ - CxxTest 编译,缺少 main

c - 声明 "char (* ( *f())[])();"是什么意思?

C语言。数组左边框 [1..] 而不是 [0..]

c++ - 使用 pugiXML 重命名基于 std::map 的节点