声明在文件中:
#include "filename"
该文件何时被其内容替换?
编译前
编译后
执行期间
答案 0 :(得分:1)
预处理在编译的其他阶段之前执行,但大多数现代编译器都将预处理阶段作为编译过程的一部分。
问题是近似的:
如果您只有3个选项,预期答案可能为1。
如果您可以选择以上,则您遇到麻烦,因为您无法确定问题是愚蠢的还是愚蠢的。
如果这是一个面试问题,这里有机会告诉面试官您对编辑过程,解析阶段等所有了解。时间限制将在主题用尽之前达到。
答案 1 :(得分:1)
如果严格遵循C标准中的描述(不使用“汇编”一词)(5.1.1翻译环境,5.1.1.1程序结构)
1 C程序不需要同时翻译。的文本 程序保存在称为源文件的单元中(或预处理 文件)在本国际标准中。 与源文件一起使用 通过预处理包含的所有头文件和源文件 指令#include称为预处理转换单元。 预处理后,预处理转换单元称为a 翻译单元。以前翻译的翻译单元可能是 单独保存或在图书馆保存。单独的翻译单位 程序通过(例如)调用函数进行通信 标识符具有外部链接,操纵对象 标识符具有外部链接或数据文件的操作。 翻译单元可以单独翻译,然后再链接到 制作一个可执行程序。
因此,在预处理期间但在翻译之前,所有#includes都将替换源文件。