我有以下关于在 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: 错误: sizeof 对不完整类型 st2::st1 的无效应用
我知道这个错误显示 char pad[64 - sizeof(struct st1)] ;在 g++ 中不起作用,虽然它在 gcc 中起作用,如果我喜欢它在 g++ 中起作用,我该怎么办?