答案 0 :(得分:1)
我在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
答案 1 :(得分:1)
documentation for GCC 9.x 已更新以在该列表中包含“类”:
<块引用>您只能在枚举、结构、联合或类的定义上指定打包属性,而不能在未定义枚举类型、结构、联合或类的 typedef 上指定。
因此,您当然可以将该属性应用于类,至少从 GCC 9.x 开始,但也可能在早期版本中也是如此。