我__attribute__((packed));
习惯将一个项一个接一个struct
地存储在内存中,因为这对于一些低级开发至关重要。
正如__attribute__((packed));
GCC 特定的那样,我想知道是否有类似的解决方案适用于所有 ANSI/C89/C99/C11 编译器或至少其中一些编译器。
问问题
291 次
2 回答
3
没有标准的方法来完成所做的事情__attribute__((packed))
。典型的解决方案是使用#ifdef
's 来处理不同的编译器。您可以在此SO 帖子中找到此方法的一些解决方案,其中还包含有关__attribute__((packed))
. 或者,GCC 支持 Windows 结构打包 pragmas,因此如果您只关心 Windows 和 GCC,您可以使用 Windows 方法。
于 2015-07-21T19:14:25.547 回答
2
不支持控制标准指定的结构布局的功能。该标准简单地说明这方面是实现定义的。
因此,如果您确实需要控制布局,则需要使用编译器特定的功能。如果您能找到一种方法来完全避免需要这样做,那将是可取的。
于 2015-07-21T19:20:07.333 回答