不,等等,容忍我..。
VLAs一直是GCC的扩展,但被C99采用:
如果不存在大小,则数组类型为不完整类型。如果大小为*而不是表达式,则数组类型是未指定大小的可变长度数组类型,只能在具有函数原型作用域的声明中使用;这些数组仍然是完整的类型。如果大小是整数常量表达式,且元素类型具有已知的常量大小,则数组类型不是可变长度数组类型;否则,数组类型是可变长度数组类型。。
C99也被称为ISO/IEC 9899:1999。
现在:
[C++11: 1.1/2]:C++是一种基于ISO/IEC 9899:1999 (以下简称C标准)的C语言的通用编程语言。除了C提供的工具之外,C++还提供了额外的数据类型、类、模板、异常、命名空间、运算符重载、函数名重载、引用、免费存储管理操作符和其他库设施。
那么C++11不应该也有VLA吗?
发布于 2011-12-21 17:55:44
这种空泛的措辞并不意味着C99中的任何东西都在C++11中,你引用的只是介绍性文本。
发布于 2011-12-21 17:49:09
对于这两种语言来说,常数表达式的定义是不同的。
const size_t size = 5;
int array[size]; // array in C++, VLA in Chttps://stackoverflow.com/questions/8593643
复制相似问题