0

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

4

2 回答 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 回答