我有一个非常基本的问题。
让我们看一下以下代码片段:
#include<iostream>
int main()
{
std::cout<<"Hello world \n";
}
在上面的节目中,“iostream&#39;被编译?
如果它编译,它不是一个开销吗?
因为无论如何我们不会在iostream中改变任何东西,但每次都会编译: - /
请帮助我理解这一点。
答案 0 :(得分:2)
include基本上会在源文件中粘贴<iostream>
的内容,因此您可以说它已被编译。
如果它编译,是不是开销?
需要更长时间,但您需要包含,因为您使用std::cout
。这是您应该只包含所需内容并尽可能使用声明的原因之一。
您可以做的是查看预编译的标头。
答案 1 :(得分:1)
是的,每个包含的标题都将被编译。
是的,它是开销,这就是为什么有些编译器有一些称为预编译头的原因。
请记住,C ++是基于C构建的,这是一种相当古老的语言,这是它所展示的领域之一。
答案 2 :(得分:0)
首先:你不能真正'编译'标题到目标文件/可执行文件 - 它们只包含编译器生成正确代码的类型和其他信息。但是,您可以包含这些文件并使编译器解析它们以获取信息。是的,它可能是一个非常小的开销,但实际上,你必须包括它。