为啥我可以在 C++ 中定义这个可变长度数组? [复制]
Posted
技术标签:
【中文标题】为啥我可以在 C++ 中定义这个可变长度数组? [复制]【英文标题】:Why can I define this variable length array in C++? [duplicate]为什么我可以在 C++ 中定义这个可变长度数组? [复制] 【发布时间】:2014-09-16 12:40:37 【问题描述】:给定
gcc -c main.C
gcc -lstdc++ -o main main.o
而 main.C 是
#include <iostream>
int main()
int somany;
std::cin >> somany;
double ex[somany];
for(int i=0;i<somany;i++)
ex[i]=0.03;
std::cout << ex[i];
为什么这不会导致编译器错误?我以为 C++ 没有 VLA?
程序运行正常。
【问题讨论】:
这是一个 gcc 扩展。你是对的,它不在标准中。 用--pedantic编译以确保标准c++ 我怎样才能只针对 c++ 标准进行编译? gcc有一些标志吗? (我的 atm 无法使用 g++) @BeyelerStudios 比我快一秒,谢谢 ;) 如果有人知道如何使问题的标题更具体,请随时编辑。 【参考方案1】:这是一个 GCC 扩展,与您使用 gcc 编译然后手动链接 C++ 标准库的方法没有任何关系。
--pedantic
编译标志通常会禁用此类扩展。
【讨论】:
以上是关于为啥我可以在 C++ 中定义这个可变长度数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
在 MS Visual C++ 中启用 VLA(可变长度数组)?