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

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

Barbara Streisand
リリース: 2024-11-12 13:35:02
オリジナル
524 人が閲覧しました

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

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

質問:

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

#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 までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート