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

标签 c++ gcc

<分区>

给定

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 扩展,与您使用 gcc 编译然后手动链接 C++ 标准库的方法没有任何关系。

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

关于c++ - 为什么我可以在 C++ 中定义这个可变长度数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25869042/

相关文章:

c++ - 错误 : `#elif with no expression` - happens only on Windows

c - gcc 中的优化级别改变了 c 程序的行为

c++ - 我应该如何使用 Doxygen 对 typedef 进行分类?

c++ - 将数据发送到另一个 C++ 程序

c++ - 如何在C++中为友元函数提供保护

c - 为什么 bits/libc-header-start.h 文件夹包含在 stdio.h header 中

c++ - qwtcurve 不绘制图形

c++ - 我收到错误:不存在从 std::basic_istream<char, std::char_traits<char>> 到 char 的合适的转换函数

c - gcc 编译器中是否有用于 pthread 代码的标志以最小化执行时间?

gcc - 确定编译的 ELF 对象是 32 位还是 64 位