编译文件(汇编文件)中的头文件信息在哪里?

时间:2017-03-21 10:36:19

标签: c

我使用了GCC -E命令,我可以看到#include文件在预处理后被粘贴。但是当我使用GCC -S命令时,在生成的汇编文件( .s )中,我无法找到有关我的头文件的信息。(更具体地说,我是否评论了#include指令,我得到相同的.s文件)。 下一步我可以使用gcc -o *.s来汇编和链接我的 .s 文件。但 GCC 在哪里获取头文件信息?

1 个答案:

答案 0 :(得分:1)

预处理输出中的#include语句可以链接到头文件,以防编译器发现错误并希望通知用户错误的具体位置("包含在xxx中) .H&#34)

#include中包含的所有代码/声明(只要它们符合正确的#ifdef/#if条件)都会在预处理输出中展开。编译器只使用此代码/声明内容来生成程序集/二进制对象文件,此时不再需要标题。

因此,您的汇编代码已经集成了头文件的信息(结构偏移,常量,类型大小......),它已不再是C,它的组装。