Я неправильно понимаю __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.