__attribute __((packed))like属性不是GCC Specific

时间:2015-07-21 18:40:24

标签: c gcc struct compiler-specific

我使用__attribute__((packed));struct的项目存储在内存中,因为这对于某些低级开发至关重要。
由于__attribute__((packed));是GCC特定的,我想知道是否有类似的解决方案适用于所有ANSI / C89 / C99 / C11编译器或至少其中一些。

2 个答案:

答案 0 :(得分:3)

没有标准方法来完成__attribute__((packed))所做的事情。典型的解决方案是使用#ifdef来处理不同的编译器。您可以在此SO post找到此方法的一些解决方案,其中还包含Visual C ++等效于__attribute__((packed))的详细信息。或者,GCC supports the Windows struct packing pragmas,所以如果你只关心Windows和GCC,你可以使用Windows方法。

答案 1 :(得分:2)

不支持控制标准指定的结构布局的功能。该标准简单地说明了这个方面是实现定义的。

因此,如果确实需要控制布局,则需要使用编译器特定的功能。如果你能找到一种方法来避免需要这样做,那就更好了。

相关问题