Flo*_*lla 15 c++ arrays stack variable-length-array
我正在使用MinGW来编译C++ 11,我发现这不会引发错误:
int S;
cin>>S;
char array[S];
Run Code Online (Sandbox Code Playgroud)
虽然这样做("'数组'的存储大小未知"):
char array[];
Run Code Online (Sandbox Code Playgroud)
对我来说,第一种情况下的大小也是未知的,因为它取决于用户输入的内容.
据我所知,自动数组在编译时分配在堆栈内存中.那么为什么第一个例子不会失败呢?
Car*_*ten 20
我没有足够的声誉来发表评论所以我正在使用答案.请不要对我残忍:-)
你显然不知道GNU GCC扩展可变长度数组.因此,您的第一个代码编译.
错误消息是不同的.您必须指定数组长度.
gcc有-pedantic开关 - 启用此开关,编译器会将您的第一个代码报告为无效:
警告:ISO C++禁止变长数组'array'
另请阅读此主题在GCC/G ++编译器中使用-pedantic的目的是什么?
使用非常仔细的编译器扩展,因为如果您将代码移植到另一个编译器,那么您将遇到大麻烦.
| 归档时间: |
|
| 查看次数: |
823 次 |
| 最近记录: |