さまざまな長さのスタック上のCでの配列の割り当て

この質問にはすでに答えがあります:            >            C++: Why does int array[size] work?                                    3つの答え                                Cのスタックに可変長配列(int array [i];など)を割り当てることができることを知って驚いた。 clangとgcc(OS / X)の両方で正常に動作するようですが、MSVC 2012では許可されていません。

この言語機能とは何ですか?そして、それは公式のC言語機能ですか?はいの場合、Cのどのバージョンですか?

完全な例:

#include <iostream>

using namespace std;

int sum(int *array, int length){
    int s = 0;
    for (int i=0;i<length;i++){
        s+= array[i];
    }
    return s;
}

int func(int i){
    int array[i]; // <-- This is the feature that I'm talking about
    for (int j=0;j<i;j++){
        array[j] = j;
    }

    return sum(array, i);

}

int main(int argc, const char * argv[])
{
    cout << "Func 1 "<<func(1)<<endl;
    cout << "Func 2 "<<func(2)<<endl;
    cout << "Func 3 "<<func(3)<<endl;

    return 0;
}
ベストアンサー
GCCのvariable length arraysを見ています。これはGNU拡張機能であり、標準のCではありません。

転載記事の出典を記入してください: さまざまな長さのスタック上のCでの配列の割り当て - コードログ