ホームページ >バックエンド開発 >C++ >標準にもかかわらず、可変長配列が C でコンパイルおよび実行されるのはなぜですか?

標準にもかかわらず、可変長配列が C でコンパイルおよび実行されるのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-12 13:35:02477ブラウズ

Why Do My Variable Length Arrays Compile and Execute in C   Despite the Standard?

可変長配列は C でサポートされていますか?

質問:

可変長配列 (VLA) という概念にもかかわらずは C 標準の一部ではありませんが、次のコードがコンパイルおよび実行されるのはなぜですか成功:

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;

    int a[n];

    for (int i=0; i<n; i++) {
        a[i] = i;
    }

    for (int i=0; i<n; i++) {
        cout << a[i] << endl;
    }
}

回答:

C 標準では、コンパイラに VLA をサポートすることを義務付けていません。ただし、コンパイラ ベンダーは拡張機能として VLA を含める場合があります。たとえば、GCC バージョン 4.7 以降は VLA をサポートしています。

VLA は当初 C 14 に含めることが提案されましたが、受け入れられませんでした。これらは、その後の C 17 リビジョンにも含まれていません。

以上が標準にもかかわらず、可変長配列が C でコンパイルおよび実行されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。