我使用__attribute__((packed));
将struct
的项目存储在内存中,因为这对于某些低级开发至关重要。
由于__attribute__((packed));
是GCC特定的,我想知道是否有类似的解决方案适用于所有ANSI / C89 / C99 / C11编译器或至少其中一些。
答案 0 :(得分:3)
没有标准方法来完成__attribute__((packed))
所做的事情。典型的解决方案是使用#ifdef
来处理不同的编译器。您可以在此SO post找到此方法的一些解决方案,其中还包含Visual C ++等效于__attribute__((packed))
的详细信息。或者,GCC supports the Windows struct packing pragmas,所以如果你只关心Windows和GCC,你可以使用Windows方法。
答案 1 :(得分:2)
不支持控制标准指定的结构布局的功能。该标准简单地说明了这个方面是实现定义的。
因此,如果确实需要控制布局,则需要使用编译器特定的功能。如果你能找到一种方法来避免需要这样做,那就更好了。