Cの空の構造体について質問があります。標準を読んでわかる限り、それらは許可されていないようです。
6.2.5-20
—構造体タイプは、順次割り当てられる空でないメンバーオブジェクトのセット(および、特定の状況では、不完全な配列)を記述します。各オブジェクトには、オプションで指定された名前と、場合によっては個別のタイプがあります。
したがって、次のようなコンパイルを試みる場合は、当然のことです。
struct foo
{
};
MS VSでは、いくつかのエラーがスローされます。
エラーC2016:Cでは、構造体または共用体に少なくとも1つのメンバーが必要です
ただし、同じコードをコンパイルする場合、gcc -Wall -Werror
エラーは発生しません。それで...
- これはCでは許可されていないという仕様を正しく読んでいますか?(そしてもっと驚くべきことに、Microsoftはそれを正しく理解しましたか?!)
gcc
この問題をキャッチするために渡すことができるオプションはありますか?