2017-07-18 62 views
-8

该声明是在一个文件中:什么将被这个陈述取代?

#include "filename" 

当将这个文件由它的内容所取代?

  1. 编译之前

  2. 后汇编

  3. 在执行过程中

+9

heh?你有没有跳过你书中的预处理章节? –

+1

问题的标题与问题本身不符。 – Codor

+1

阅读此:https://stackoverflow.com/questions/16253977/how-does-c-preprocessor-work –

回答

1

预处理编译的其他阶段之前进行的,但大多数现代编译器包括预处理阶段的一部分的编译过程。

的问题是近似:

  • 如果你只有3种选择,预期的答案很可能是1

  • 如果你可以选择没有以上的,你有麻烦了因为你不能确定问题是愚蠢的还是微不足道的。

  • 如果这是一个面试问题,这里有机会告诉面试官你所知道的关于编译过程,解析阶段等的时间限制。

+0

.. unless NOTA是一个隐藏的选项;) – CinCout

+1

@CinCout:确实这可能是一个诡计的问题。 – chqrlie

+0

@chqrlie“如果这是一个面试问题,这里是你有机会告诉面试官你所有......思考他。”:) –

1

如果严格按照C标准这说明(不使用单词“汇编”)(5.1.1翻译环境,5.1.1.1程序结构)

1交流计划不需要全部同时翻译。该程序的文本保存在本标准中称为源文件的单元(或预处理文件 )中。 源文件连同 所有通过预处理 指令#include包含的头文件和源文件被称为预处理转换单元。预处理后,预处理翻译单元称为 翻译单元以前翻译的单位可能是 单独保存或在图书馆。程序的单独翻译单元 通过(例如)调用与其标识符具有外部链接的功能,对其标识符具有外部链接的对象的操纵或对数据文件的操纵进行通信。 翻译单元可以单独翻译然后再链接到 产生一个可执行程序。

因此,在预处理期间但在翻译之前,所有#includes都替换源文件。