为什么我可以在C++中定义可变长度数组?

3

鉴于

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)?
执行程序完全没有问题。

6
这是GCC的扩展功能,你说得对,它不在标准里。 - jrok
3
使用--pedantic选项进行编译,以确保符合C++标准。 - BeyelerStudios
我如何只针对C++标准进行编译?有gcc的某些标志吗?(当前无法使用g ++) - ben
这可能会有所帮助 https://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html - Dawid
.C扩展名告诉gcc这是c++代码。在编译时,您无需指定任何关于c++ std的内容。据我所知,只有在链接时才需要这样做。 - ben
显示剩余3条评论
1个回答

0

这是GCC的扩展,与您使用gcc编译然后手动链接C ++标准库的方法无关。

--pedantic编译标志通常会禁用此类扩展。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接