我有两个用C编写的应用程序包含相同的头文件.在这个标题中,我有一个结构的声明.我使用GCC编译器来编译这两个应用程序.
当我执行两个应用程序时,它们会产生不同的值sizeof(struct-defined-in-the-header)
.
为什么会这样?
首先,确保对所有内容进行干净的构建.
如果问题仍然存在,则可能意味着两个翻译单元使用了不同的编译选项.我将捕获gcc
用于两个编译的命令行,并将它们进行比较,特别注意与对齐,结构填充等有关的任何选项.
另一种可能性是结构的定义取决于一些预处理器符号,并且符号对于两个转换单元的定义不同.使用gcc -E
和比较两个预处理器输出中的结构定义将是一个良好的开端.