2

我希望我在 GCC 下编译的 c++ 程序具有 4 个字节(结构成员)的最大对齐。我真的可以通过#pragma pack 指令来做到这一点。但是,在我的情况下这很不舒服,因为该项目非常大,我需要使用#pragma pack 制作一个标题,它必须包含在任何地方。现在,gcc 编译器有一个选项 -mstructure-size-boundary=n 记录在这里http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html#ARM-Options,它说“允许的值为8, 32 和 64。” 实际上,当我尝试将其设置为 4 字节时,编译器会抛出警告“结构大小边界只能设置为 8、32 或 64”(令人惊讶,嗯?)。但是为什么我可以通过#pragma 将其设置为 4?有谁知道如何通过编译器设置将 gcc 结构对齐设置为 8-32-64 以外的其他值?

4

2 回答 2

3

-mstructure-size-boundary=n 指定位对齐,而#pragma pack 使用字节。

4 字节 -> 32 位。

另请参见 gcc 选项 -fpack-struct

于 2012-04-23T08:39:47.290 回答
3

您对 mstructure-size-option 的理解是错误的。它指的是结构的大小(顾名思义)。这与成员的对齐方式无关。为此,您可以使用(除了编译指示)选项-fpack-struct[=n].

于 2012-04-23T08:40:09.147 回答