G 和关于数组大小的叮当声

g++ and Clang regarding array size

本文关键字:叮当声 数组 于数组      更新时间:2023-10-16

我已经注意到此代码:

#include <iostream>
using namespace std;
int main () {
    int k;
    cin >> k;
    int n[k];
    for (int i = 0; i < k; i++)
        n[i] = i;
    for (int i = 0; i < k; i++)
        cout << n[i] << " ";
    return 0;
}

编译很好。任何人都可以澄清一下,因为据我所知,静态阵列必须具有其大小的常数。

clang和GCC支持变量长度阵列作为C 中的扩展名,即使它是C99功能。如果您使用-pedantic标志编译,他们都将提供警告,例如,这就是clang所说的:

warning: ISO C++ forbids variable length array 'n' [-Wvla]
 int n[k];
        ^

您可以使用-pedantic-errors标志将其转变为错误。