C の可変サイズ配列 : GCC 拡張機能を使用したコンパイル
C では通常、配列サイズが定数の整数である必要があります。ただし、GCC は、配列サイズを宣言するために非定数変数の使用を可能にする拡張機能を提供します。
質問:
次のコードはなぜコンパイルに成功しますか? GCC?
<code class="cpp">void f(int i) { int v1[i]; } int main() { int i = 3; int v2[i]; f(5); }</code>
答え:
この動作は、GCC によって導入された C 標準の拡張です。デフォルトでは、GCC では非定数変数を使用して配列サイズを指定できます。
ただし、次のような重要な注意事項があります。
拡張機能の使用:
この拡張機能を利用するには、サイズとして非定数変数を使用して配列を宣言するだけです:
<code class="cpp">int arraySize = 5; int myArray[arraySize];</code>
移植性の克服懸念事項:
移植性が懸念される場合は、可変サイズの配列の代わりに std::vector コンテナを使用できます:
<code class="cpp">std::vector<int> myVector(arraySize);</code>
この拡張機能を利用すると、より多くのメリットが得られます。動的な状況での配列サイズの管理における柔軟性。ただし、プロジェクトで使用する場合は、その制限を認識し、移植性への影響を考慮することが重要です。
以上がなぜ GCC は C で可変サイズの配列を許可するのですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。