在C中#include?

我读到#include< file>在编译之前,C预处理器会将“文件”粘贴到我们的源文件中.

这是否意味着只要我们编译源文件,“file”(iostream)也会一次又一次地编译?

在C完成其工作后,中间文件的大小是否也会有“文件”“源文件大小”的字节?

I read that #include <file> will copy
paste “file” into our source file by C++ preprocessor before being
compiled.

是.编译器正确看到的数据将包含文件中的数据和源文件中的数据. (实际上,如今真正的编译器倾向于将C预处理器和编译器前端以及编译器后端合并到一个程序中 – 但这非常详细.)

Does this mean that the “file” (iostream) will also be compiled again
and again as long as we compile source file?

是.有些编译器有一个叫做“预编译头”的功能,它允许你编译一堆头文件,然后多次使用它的输出.如何执行此操作因编译器而异;如果你需要可移植性,不要担心它(它不会对编译时间产生很大的影响).

Also after C++ does its job, will the size of intermediate file also
have bytes of “file” + “size of source file”?

不可以.输出文件的大小与源文件的大小非常微弱相关.例如#include< iostream>定义了许多内联函数.任何特定程序只会使用极少数 – 因此它们将从编译器输出中省略.

注释(使用源文件中的空格)不会出现在输出中.

另一方面,如果您编写一个复杂的模板,然后将其实例化为几种不同的类型,那么输出将包含每种类型的模板的不同副本,并且可能比输入大很多.

翻译自:https://stackoverflow.com/questions/41116250/include-iostream-in-c

转载注明原文:在C中#include?