Я не смог четко найти ответ в документе GCC, но после следующих экспериментов кажется, что вы можете.
#include <iostream>
struct UnPackedStruct {
unsigned char a;
int b;
};
struct __attribute__ ((__packed__)) PackedStruct {
unsigned char a;
int b;
};
class __attribute__ ((__packed__)) PackedClass{
unsigned char a;
int b;
};
int main()
{
std::cerr << "sizeof( UnPackedStruct ): " << sizeof(UnPackedStruct)
<< ", sizeof( PackedStruct ): " << sizeof(PackedStruct)
<< ", sizeof( PackedClass): " << sizeof(PackedClass)
<< "\n";
return 0;
}
Вывод:
sizeof( UnPackedStruct ): 8, sizeof( PackedStruct ): 5, sizeof( PackedClass): 5
Попробуйте это с онлайн-компилятором