我有一段简单的 c++ 代码:
#include <iostream>
using namespace std;
int main ()
{
cout << "Hello World!";
return 0;
}
当我生成此代码的程序集时,我得到一个巨大的程序集文件,我认为它是标准库的编译。为什么会发生这种情况,我该如何预防?
我有一段简单的 c++ 代码:
#include <iostream>
using namespace std;
int main ()
{
cout << "Hello World!";
return 0;
}
当我生成此代码的程序集时,我得到一个巨大的程序集文件,我认为它是标准库的编译。为什么会发生这种情况,我该如何预防?
许多标准库都是由模板组成的。当您使用模板时,它会专门供您使用,并且专业化将成为您的二进制文件的一部分。这是无法避免的,尽管您可以使用外部模板确保专业化仅在您的一个翻译单元中。
std::cout 是标准库的一部分。
你用过。
真的很明显。
Iostreams 是模板,因此代码是在您的对象中发出的,而不是在共享库中,但启用优化后,(剥离的)大小不应大于实现 helloworld 所需的大小。
有关另一个答案,请参见http://www2.research.att.com/~bs/bs_faq.html#Hello-world。