Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.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
C++ 为什么`包括<;iostream>;`最终包含这么多文件?_C++_Include_Iostream - Fatal编程技术网

C++ 为什么`包括<;iostream>;`最终包含这么多文件?

C++ 为什么`包括<;iostream>;`最终包含这么多文件?,c++,include,iostream,C++,Include,Iostream,这方面的后续行动: 当我执行时,包括 碰巧它包含了许多来自/usr/include.Agrep“\usr\include”overg++-E prog.cpp的文件,总计约1260个条目;) 它们是控制包括各种文件的方法吗? 平台:Linux G++版本:4.2.4否,包含它们,因为它直接依赖于它们,或者它的依赖性依赖于它们 你对此无能为力 您可以(取决于您的编译器)在需要使用流时使用You#include来限制这对编译时间的影响。这应该定义一些你需要的东西。它需要进行多少活动才能做到这一点,这

这方面的后续行动:

当我执行
时,包括

碰巧它包含了许多来自
/usr/include
.A
grep“\usr\include”
over
g++-E prog.cpp
的文件,总计约1260个条目;)

它们是控制包括各种文件的方法吗?
平台:Linux
G++版本:4.2.4

否,
包含它们,因为它直接依赖于它们,或者它的依赖性依赖于它们

你对此无能为力

您可以(取决于您的编译器)在需要使用流时使用

You
#include
来限制这对编译时间的影响。这应该定义一些你需要的东西。它需要进行多少活动才能做到这一点,这是一个实施质量问题。您可以从
/usr/include
中删除文件,但这会破坏一切


我真的怀疑它是否包括1260个文件。几乎可以肯定的是,其中大多数都是重复条目,不加载任何内容,但不会从
-E
输出中删除。

我的建议是不要担心编译器包含多少文件。更多地关注正确性、健壮性和进度。如果需要考虑构建时间,可以使用更快的机器,通宵构建,散步,或者将代码划分为更小的翻译单元。翻译单元应该足够小,以包含不经常更改的代码。变化是邪恶的

构建系统的基础是编译只有少数文件已经更改。如果开发过程正常运行,随着项目的增长,构建时间将越来越多地停留在链接阶段。

如果编译时间仍然很长,请查看编译器是否支持预编译头。通常,这是编译器以更有效的形式存储所有声明和定义的方法。

g++-E输出包含行号信息。grep显示了大量重复的文件名,这与包含的文件数量无关。尝试
g++-E prog.cpp|grep-o”/usr/include[^]*“| sort-u|wc-l
。我对/usr/include的点击率为44,对/usr/lib的点击率为78。您是否可以改为包含一个目标标题,如或?此外,如果您希望减少报头之间的依赖关系,那么如果您不访问报头中的任何成员(例如,如果您只是使用流引用、指针等),则可以使用拉入前向声明。