gcc 4.4.6 で正常にコンパイルされた構造に関する次のソースがあります。
struct st1
{
char name[12];
int heartbeat ;
double price ;
int iFlag ;
} ;
struct st2 {
struct st1 ;
char pad[64 - sizeof(struct st1)] ;
} __attribute__((aligned(64))) ;
int main (void)
{
printf("length of struct st2=(%d)\n",sizeof(struct st2) ) ;
}
gcc -fms-extensions test1.c -o test1.exe
./test1.exe ===> length of struct st2=(64)
test1.c を test1.cpp にコピーし、次のようにコンパイルしようとします。
g++ -fms-extensions test1.cpp -o test1.exe
そして、私は得ました:
test1.cpp:23: エラー: 不完全な型 st2::st1 への sizeof の適用が無効です
私はこのエラーが char pad[64 - sizeof(struct st1)] ; を示していることを知っています。g++ では動作しませんが、gcc では動作しますが、これが g++ で動作するのが気に入ったら、どうすればよいですか?