__attribute__((packed)) 类非 GCC 特定的属性

A __attribute__((packed)) like attribute not GCC Specific

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

没有标准方法可以完成 __attribute__((packed)) 所做的事情。典型的解决方案是使用 #ifdef 来处理不同的编译器。您可以在此 SO post which also contains the details on the Visual C++ equivalent of __attribute__((packed)). Alternatively, GCC supports the Windows struct packing pragmas 找到针对此方法的一些解决方案,因此如果您只关心 Windows 和 GCC,则可以使用 Windows 方法。

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

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