メンバ変数を1個ももたない空(empty)の構造体は、C++言語ではwell-definedとされるが、C言語ではill-formedとなる。
// C++: OK / C: NG struct S { };
GCCでは独自拡張として空の構造体を許容するが、標準C++とは異なり構造体サイズが0
となることに注意。
// GNU C拡張 struct S {}; printf("%zu", sizeof(struct S)); // 0
// 標準C++ struct S {}; printf("%zu", sizeof(struct S)); // 1