可変サイズの配列: GCC 拡張機能
C 標準では、配列の宣言時にそのサイズが定数の整数である必要があると規定しています。しかし、この疑問は、配列サイズに非定数変数を使用するコード スニペットが GCC で正常にコンパイルされるという驚くべき観察を引き起こします。
GCC 拡張機能
GCC は導入しています標準の拡張機能で、配列サイズに非定数変数を使用できるようにします。 「The C Programming Language」の引用セクションで述べたように、これは標準ではサポートされていません。
The Surprise
質問内のコード スニペットは、配列 v1 と、整数の引数 (配列サイズを表す) を取る関数 f です。 f の v2 に値を割り当てる場合、GCC はこの非標準の動作を許可します。
影響
GCC はこの拡張を許可していますが、次の点に注意することが重要です。 C 標準の一部ではありません。これを使用すると、拡張機能をサポートしていない他のコンパイラまたはシステムで移植性の問題が発生する可能性があります。
強制と警告
コンパイラは、-pedantic のようなオプションを使用して標準を強制できます。 。このオプションを使用すると、GCC は可変サイズの配列などの非標準構造に遭遇したときに警告を発行します。同様に、-std=c 98 を指定すると、この構成はエラーになります。
結論
GCC の拡張機能では可変サイズの配列の宣言が可能ですが、次のことが重要です。これは C 標準の一部ではないことに注意してください。移植性と標準への準拠のために、一定の配列サイズを使用することをお勧めします。
以上がGCC コンパイラーは C で可変サイズの配列を使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。