Я неправильно понимаю __attribute__ ((упаковано)) в GCC?

Я пытаюсь следующее, с gcc на win32.

#include <stdio.h>

struct st { char c; int x; } __attribute__ ((packed));

int main() {
    printf("%d\n", sizeof(struct st));
    return 0;
}

Я ожидаю, что напечатанное значение равно 5, но это 8.

Однако со следующим я получаю 5.

#include <stdio.h>

#pragma pack(1)
struct st { char c; int x; };

int main() {
    printf("%d\n", sizeof(struct st));
    return 0;
}

Должно быть, что-то не так в моей программе, но я не вижу, что. я прочиталРуководство GCC и несколько вопросов по этому поводу, и я все еще озадачен. Любой намек?

Также из ответов на эти вопросы о SO, я понимаю, что я не должен использовать упакованные структуры длясортировочныйи я, вероятно, не буду много его использовать, но я все же хотел бы понять, чего не вижу в такой короткой программе.

Примечание: проблема возникает как с gcc-4.9.2, так и с gcc-4.8.4.

Ответы на вопрос(2)

Ваш ответ на вопрос