sizeof为同一个struct返回不同的值

Osw*_*lho 2 c gcc sizeof

我有两个用C编写的应用程序包含相同的头文件.在这个标题中,我有一个结构的声明.我使用GCC编译器来编译这两个应用程序.

当我执行两个应用程序时,它们会产生不同的值sizeof(struct-defined-in-the-header).

为什么会这样?

NPE*_*NPE 6

首先,确保对所有内容进行干净的构建.

如果问题仍然存在,则可能意味着两个翻译单元使用了不同的编译选项.我将捕获gcc用于两个编译的命令行,并将它们进行比较,特别注意与对齐,结构填充等有关的任何选项.

另一种可能性是结构的定义取决于一些预处理器符号,并且符号对于两个转换单元的定义不同.使用gcc -E和比较两个预处理器输出中的结构定义将是一个良好的开端.