在C++中#include <iostream>?

Har*_*hak 7 c++

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

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

在C++完成它的工作之后,中间文件的大小也会有"文件"+"源文件大小"的字节吗?

Mar*_*ica 12

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

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

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

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

在C++完成它的工作之后,中间文件的大小也会有"文件"+"源文件大小"的字节吗?

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

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

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