0

我有一段简单的 c++ 代码:

#include <iostream>
using namespace std;

int main ()
{
  cout << "Hello World!";
  return 0;
}

当我生成此代码的程序集时,我得到一个巨大的程序集文件,我认为它是标准库的编译。为什么会发生这种情况,我该如何预防?

4

2 回答 2

0

许多标准库都是由模板组成的。当您使用模板时,它会专门供您使用,并且专业化将成为您的二进制文件的一部分。这是无法避免的,尽管您可以使用外部模板确保专业化仅在您的一个翻译单元中。

于 2012-06-18T12:46:10.733 回答
-2

std::cout 是标准库的一部分。

你用过。

真的很明显。

Iostreams 是模板,因此代码是在您的对象中发出的,而不是在共享库中,但启用优化后,(剥离的)大小不应大于实现 helloworld 所需的大小。

有关另一个答案,请参见http://www2.research.att.com/~bs/bs_faq.html#Hello-world

于 2012-06-18T13:37:24.983 回答