-2
#include<stdio.h>
int main()
{    
    printf("hi");    
}

哪个将首先执行主文件或头文件?

主程序会先执行并包含头文件的内容吗?

4

4 回答 4

3

#include意味着文件的文本插入恰好在#include找到的行。这是由预处理器完成的,因此编译器不再看到#include命令本身。在您的情况下,这意味着首先编译 stdio.h 中的所有代码,然后编译main()您的 function 。但是程序执行总是以main()

于 2013-07-27T09:46:36.843 回答
2

C 编译翻译单元。构建一个翻译单元,就好像包含的文件存在于您包含它们的主源文件中一样。

因此,在这种情况下,编译器在看到头文件的内容之前就看到了main(它实际上并没有执行它们中的任何一个)。

C11部分6.10.2 Source file inclusion /2是 ISO 标准的控制部分(与 C99 中的部分编号相同):

形式的预处理指令

# include <h-char-sequence> new-line

在一系列实现定义的位置中搜索由<>分隔符之间的指定序列唯一标识的标头,并用标头的全部内容替换该指令。如何指定位置或标识的标头是实现定义的。

至于运行程序时首先执行的内容,有各种初始化操作超出了您的直接控制范围,但 C代码的第一次执行以开头main,至少对于托管环境而言。在嵌入式系统或像 Linux 这样的操作系统等独立环境中,该标准允许任何起点。

于 2013-07-27T09:46:40.720 回答
1

简单地说,#include就是粘贴包含文件的内容。所以事情是按照你的文件顺序编译的#include,然后放置代码。

于 2013-07-27T09:43:54.243 回答
0

C 程序的翻译分 8 个阶段完成。在第 4 阶段执行包含指令,在第 8 阶段收集第 7 阶段的输出以形成可执行文件。

于 2013-07-27T09:44:45.820 回答