C では、レガシー コードで「長さ 0 の配列」状況が発生することがあります。これには、長さ 0 の配列を含む構造体が含まれます。警告はプラグマによって抑制されますが、そのような配列を含む新しい構造を作成すると、エラー 2233 が発生する可能性があります。なぜこれが発生するのでしょうか?また、解決するにはどうすればよいですか?
長さ 0 の配列を使用する理由は、歴史的なものです。配列の動的割り当てを可能にする C ハック。開発者は、長さ 1 の配列またはポインターを使用する代わりに、長さ 0 の配列を含む構造体を作成します。これにより、構造体の nData メンバーを使用して配列のサイズを動的に計算できるようになります。
この問題を修正するには、C-Hack を使用できます。関数 mallocSomeData を作成して、指定した長さの配列を動的に割り当てることができます。
struct someData* mallocSomeData(int size) { struct someData* result = (struct someData*)malloc(sizeof(struct someData) + size * sizeof(BYTE)); if (result) { result->nData = size; } return result; }
この関数を使用すると、目的の長さの配列を含む someData のオブジェクトを作成し、「配列」を効果的にアドレス指定できます。長さゼロの」問題
以上がC で長さ 0 の配列を使用するとエラー 2233 が発生するのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。