非定数変数を使用した配列サイズ宣言
C の配列サイズは定数でなければならないという広く受け入れられている概念に反して、最近の観察では一部のコンパイラでは、この点でより柔軟な対応が可能であることが明らかになりました。 C 標準では、配列境界は定数式でなければならないと規定されていますが、GCC では、配列サイズ宣言で非定数変数の使用を可能にする拡張機能が導入されました。
次の例を考えてみましょう:
<code class="c++">int ArraySize = 5; int MyArray[ArraySize];</code>
標準 C では、 ArraySize が定数ではないため、このコードはコンパイラ エラーを生成します。ただし、GCC は問題なくコンパイルします。
この動作を理解するには、GCC の拡張機能が C 標準からの逸脱であることを認識することが不可欠です。 Bjarne Stroustrup の「The C Programming Language」からの抜粋では、配列境界は定数式でなければならないと明示的に述べられています。
それにもかかわらず、GCC の拡張機能は、実行時に配列を動的に割り当てる便利な方法を提供します。 GCC の拡張機能に依存するコードは他の準拠 C コンパイラではコンパイルできない可能性があるため、この柔軟性は移植性を犠牲にしていると主張する人もいます。
移植性が懸念される場合、GCC は標準準拠を強制するオプションを提供します。コンパイル中に -pedantic フラグを渡すと、非定数配列サイズ宣言に対する警告が表示され、 -std=c 98 はそれをエラーとして扱います。これらのオプションは、実行時の利便性よりも C 標準への厳密な準拠を優先します。
以上がC で非定数変数を使用して配列サイズを宣言できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。