在C++中,使用变量作为数组的维度
Use a variable as the dimension of an array in C++?
我只是想知道为什么这在Clang 4.0:中有效
unsigned cnt = 42;
int k[cnt];
但这不会:
unsigned cnt = 42;
string bad[cnt];
我刚刚检查了C++初级读本第5版。上面写着:
维度必须在编译时已知,这意味着维度必须是一个常量表达式
如果这是真的,为什么int k[cnt];
工作?
这两个代码段在C++中都不起作用。
然而,在C中,可以使用非常数表达式作为数组大小。一些编译器(例如,没有-pedantic
选项的GCC)支持C++代码中的C特性。
至于元素类型之间的差异,它是编译器特有的。GCC编译两者。clang++在这种情况下禁止非POD类型(如std::string
)。
你用的是什么编译器,我用的是gcc,const和nonconst都很好。
这不是c的问题,数组不是通过变量定义的,而是通过宏和常量表达式定义的。
这是编译器的解释问题,我怀疑它与标准有关。
clang 4.0真的是苹果xcode clang吗?我认为这实际上是3.1版本。clang提供了一个很好的解释:
warning: variable length arrays are a C99 feature
[-Wvla-extension]
int k[cnt];
相关文章:
- 具有推导参数的模板函数指针数组变量
- 按字母顺序对结构内数组变量中的名称进行排序
- 传递 std::数组变量作为参数
- 为什么数组变量正在更新
- 将字符数组转换为结构时出现问题. 结构的字符数组变量溢出
- 类中的数组变量C++导致"was not declared in this scope"实现文件的一个函数中错误,但在构造函数中不会导致错误
- 数组变量中更多变量或更多维度?
- 数组变量周围的堆栈已损坏
- 数组变量衰减为指针
- C++ 无法将字符数组变量分配给字符串变量
- 使用指针变量打印特定的数组变量
- 数组变量是C++中的引用吗?
- 数组变量未正确分配以进行循环
- 在 c++ 中向数组变量添加一个数字
- 如果数组变量在 c# 代码中定义为“ref”参数,则如何传递数组变量
- 指针和 c 样式数组变量的专用模板
- 堆栈数组变量清理
- 如何从DLL检索数组变量?(视觉C )
- 如何将初始值设定项与右值引用参数一起使用 // 为什么不能使用另一个 C 样式数组变量初始化 C 样式数组
- 更改了错误的数组变量