3

iostream,当它包含的所有文件、那些包含的文件等等,加起来大约有 3000 行。

考虑 hello world 程序,它只需要在屏幕上打印一些东西就可以了:

#include <iostream> //+3000 lines right there.
int main()
{
    std::cout << "Hello, World!";
    return 0;
}

这应该是一段非常简单的代码,但 iostream 将 3000+ 行添加到边缘代码中。那么,是否真的需要这 3000 多行代码才能简单地在屏幕上显示一行,如果不需要,它们创建的程序是否比我简单地将相关行复制到代码中效率低?

4

4 回答 4

3

如果您担心<iostream>只需要打印一行文本的大小,请尝试使用<cstdio>std::puts()

(说真的,人们为什么要使用printf()或者cout什么时候更简单、更快捷地puts()完全符合要求?它甚至会自动附加适当的换行符......)

在一个严肃的应用程序中,大小和编译时间<iostream>不会很重要。(另外,正如其他人已经指出的那样,链接器不会链接未使用的内容。)

编辑:我刚刚意识到我并没有真正回答这个问题。不,并不是所有的 3000 行都需要打印代码行,但是您会发现几乎不可能找到生成输出行所需的“几行”,因为 I/O 库源往往是相互依存严重。除了稍微增加编译时间之外,它们并没有什么害处——你的代码不会因为“绒毛”在链接器阶段被丢弃而降低效率。

于 2009-10-15T08:38:58.460 回答
1

它使编译速度变慢(但可以通过预编译的头文件等来缓解),但是任何体面的链接器都应该删除不需要的东西。

于 2009-10-15T08:32:53.677 回答
0

编译器删除了链接步骤中不需要的所有内容。对编译器充满信心,无需手动清理!关于性能,如果您在许多 cpp 文件中使用了许多大头文件,请考虑使用预编译头文件,这将大大提高编译时性能(包含的头文件是预先解析和重用的)。

于 2009-10-15T08:33:04.893 回答
-2

在 C++ 中,代码中未调用的函数不会被编译。

于 2009-10-15T08:35:07.447 回答