什么时候#include <stdio.h>被执行?

时间:2015-10-29 13:31:08

标签: c

我开始学习C编程。我经历了这个例子

#include <stdio.h>
main() {
    printf("Hello, World");
}

据说主要是节目的开始。那么,如果main首先启动,第一行何时以及如何执行?

4 个答案:

答案 0 :(得分:5)

编译#include等预处理程序指令并在编译代码时对其进行操作,而不是在运行时执行。如果它们完全被“执行”,则发生在程序运行范围之外。

一般来说,包括诸如stdio.h之类的头文件只会使宏程序,函数声明,类型声明以及有时可用于程序的全局变量声明。没有直接的运行时效果。

答案 1 :(得分:2)

这里说明程序/库的生成(对于C来说是相同的):

Code build

预处理器只处理文本;它几乎不知道C语法。它扫描输入程序文本,查找指令,其中一行中的第一个字符是“#”或“转义换行”序列。当它满足这些指令时,它需要采取某些操作,包括处理其他文件(#include),定义符号(#define)等(#ifdef)。它完全依赖于程序文本,并且很乐意预处理可能对C编译器完全乱码的文本。

#include指令将另一个文件读入程序所在的位置。它有效地将两个输入文件合并到编译器的单个输出文件中。所以此时预处理器应该找到所有包含的文件(通常是标题)。

链接

答案 2 :(得分:0)

它没有,它是预处理器的#include语句,导致它将头文件stdio.h的内容复制粘贴到您的程序,允许您使用其typedef和结构和函数或宏。如果使用库中定义的函数,结构,typedef或宏,则需要#include该库,因此编译器知道从何处获取所使用函数的定义。

一般来说,运行程序时#include不会被执行。只有在编译程序时它才有用。

答案 3 :(得分:0)

正如其他人所说,它根本没有被你的程序执行。在将代码传递给编译器之前,会发生什么:文件withTransaction的确切内容,它存在于您的计算机可以找到它的计算机上。这允许您使用文件中的代码。如果您以后包含自己的头文件,请务必记住这是一个基本的复制粘贴操作,并且没有什么奇怪的事情发生。

这些以stdio.h符号开头的指令称为预处理程序指令,因为它们是在编译器看到代码之前的早期发生的。