Выравнивание структуры скомпилировано нормально в c, не удалось в c++C++

Программы на C++. Форум разработчиков
Anonymous
 Выравнивание структуры скомпилировано нормально в c, не удалось в c++

Сообщение Anonymous »

У меня есть следующий источник информации о структуре, которая нормально скомпилировалась в 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

Я знаю, что эта ошибка показывает charpad[64 - sizeof(struct st1)] ; не работает в g++,
хотя работает в gcc, если мне нравится, что это работает в g++, что я могу сделать?

Подробнее здесь: https://stackoverflow.com/questions/157 ... ailed-in-c

Вернуться в «C++»