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