我希望在 GCC 下编译的 c++ 程序最大对齐 4 个字节(结构成员)。我真的可以通过#pragma pack 指令来做到这一点。然而,这对我来说很不舒服,因为项目很大,我需要用#pragma pack 制作一个 header ,必须在任何地方都包含它。现在,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 以外的其他值?
最佳答案
您对 mstructure-size-option 的理解有误。它指的是结构的大小(顾名思义)。这与成员的对齐无关。为此,您可以使用(除了 pragma 之外)选项 -fpack-struct[=n]
。
关于c++ - 如何通过编译器设置(不是编译指示)告诉 GCC 将结构大小边界设置为 4 个字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10277196/