Имеется такой кусок программы на си:
struct REGS_BLOCK
{
unsigned char P __attribute__ ((packed)),
A __attribute__ ((packed)),
Y __attribute__ ((packed)),
X __attribute__ ((packed)),
S __attribute__ ((packed)),
PCh __attribute__ ((packed)),
PCl __attribute__ ((packed));
} Snap;
предупреждение: атрибут ‘packed’ для поля типа ‘unsigned char’ проигнорирован
Возникло 3 вопроса:
1. Как по-вашему, что имел в виду автор программы? Чтобы все эти 1-байтные переменные шли подряд, без зазоров?
2. Правильно ли будет заменить этот фрагмент на
struct REGS_BLOCK
{
unsigned char P, A, Y, X, S, PCh, PCl;
} Snap __attribute__ ((packed);
3. Во всех ли компиляторах будут правильно работать 1-й и 2-ой варианты?