C が C のサブセットであることの例外
一般的に C は C のサブセットであると言われていますが、この主張は完全に正確ではありません。 C と C の特定のバージョンを比較すると、違いが現れます。
C89 と C の違い
-
暫定的な定義はありません: C には違いがあります。定義のない同じ名前の変数を再宣言することはできません。 between.
-
異なる配列型の互換性: C は、特定のサイズの配列 (例: int a[1]) とサイズが指定されていない配列 (例: int (*ap)[) を区別します。 ]))、一方、C では互換性が可能です。
-
K&R 関数宣言なしスタイル: C では関数定義に別の構文が必要で、古い K&R スタイル (例: int b(a) int a; { }) は許可されません。
-
ネストされた構造体のスコープの違い: C では、ネストされた構造体はクラスレベルの宣言として扱われるため、それを囲んでいる外部からはアクセスできなくなります。 struct.
-
いいえ デフォルト int Type: C では、 int がデフォルトで想定される C とは異なり、 auto 変数には明示的な型指定子が必要です。
C99 と C の違い
C99 には追加の逸脱が導入されています厳密な C 互換性から:
-
配列次元の制限: C99 では、関数パラメーターの配列次元を指定する際に特定の特殊文字が許可されません。
-
可変長の欠如配列: サイズとして非定数式を使用して宣言された可変長配列は、 C でサポートされています。
-
柔軟な配列メンバーはありません: 実行時にサイズを指定できる C99 の柔軟な配列メンバーは、C .
- 制限修飾子の欠如: 最適化の目的で使用される C の制限修飾子は、 C99.
以上がC は本当に C のサブセットですか? : 主な違いと例外を調査するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。