Я делаю несколько примеров программ для изучения C и хотел бы знать, почему добавление структуры может выполняться только по мощности.
#include <stdio.h>
#pragma pack(push, 3)
union aaaa
{
   struct bbb
   {
      int a;
      double b;
      char c;
   }xx;
   float f;
};
#pragma pack(pop)
int main()
{
printf("\n Size: %d", sizeof(union aaaa));
return 0;
}
При компиляции
warning: alignment must be a small power of two, not 3 [-Wpragmas]
warning: #pragma pack (pop) encountered without matching #pragma pack (push) [-Wpragmas]
Кажется, что #pragma не имеет никакого эффекта. Выход только 24. то есть 4 байт выровнены.
