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