Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么g++;链接标准库? 我有一个简单的C++代码: #include <iostream> using namespace std; int main () { cout << "Hello World!"; return 0; } #包括 使用名称空间std; int main() { cout_C++ - Fatal编程技术网

为什么g++;链接标准库? 我有一个简单的C++代码: #include <iostream> using namespace std; int main () { cout << "Hello World!"; return 0; } #包括 使用名称空间std; int main() { cout

为什么g++;链接标准库? 我有一个简单的C++代码: #include <iostream> using namespace std; int main () { cout << "Hello World!"; return 0; } #包括 使用名称空间std; int main() { cout,c++,C++,大多数标准库都是由模板组成的。当您使用模板时,它会被专门化以供您使用,并且专门化将成为二进制文件的一部分。这是不可避免的,尽管您可以使用外部模板确保专门化只存在于一个翻译单元中。std::cout是标准的一部分图书馆 你用过了 真的很明显 iostream是模板,因此代码是在对象中发出的,而不是在共享库中发出的,但是在启用优化的情况下,(剥离的)大小不应该大于实现helloworld所需的大小 请参阅以获取另一个答案。定义“巨大”。我使用-O3获得一个7.4kb的文件。@mabs:如果您确定不需

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

std::cout是标准的一部分图书馆

你用过了

真的很明显

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


请参阅以获取另一个答案。

定义“巨大”。我使用-O3获得一个7.4kb的文件。@mabs:如果您确定不需要任何标准头,可以将
-nostdinc
传递到编译器的命令行。+1传递给MFontani,并请指定您的编译器和设置。
头可能包括包含实现流的模板的其他头。扩展的模板会出现在你的文件中,你说你“假定”你看到的大容量文件来自标准库。这意味着你甚至不确定你问的是不是一个有效的问题。当你甚至不确定你问的是什么时,谁能回答?你需要问的第一个问题是文件中的大容量文件是什么。然后问它为什么在那里。要知道大容量文件是什么,你需要告诉我们你是如何处理的生成它(编译器和链接器版本和命令行)。如果你这样说,那么为什么在使用它时不包含
printf
等?当然,这是一个反问。