1

我在项目的所有代码文件中都包含了几个 STL 标头,例如列表和矢量。我知道我自己的标题应该使用包含防护,但是当它们不是由我定义时,对于这种情况怎么办?

在我的每个文件中包含相同的标题是否很糟糕?每次包含它都会有性能损失吗?

4

2 回答 2

1

没有性能成本。标准头文件有自己的包含保护,并且所有包含保护都由预处理器优化,因此文件实际上不会每次都重新加载。

正确性和可维护性始终是首要问题……当您重新排列文件并出现“未定义的标识符”错误或更糟时,您必须节省多少编译时间来弥补修复工作所花费的工作!

编辑:从所有头文件中包含相同的标准头文件并没有性能成本。从源文件中包含额外的标准头会产生一些性能成本。这个问题有点模棱两可……但无论哪种方式,C++ 编译中真正昂贵的部分通常是模板实例化,而不是解析文本。

于 2012-04-15T04:09:21.243 回答
0

作为一般规则,
您必须仅在源文件需要时才包含头文件。

包含保护可以防止同一个头文件多次包含在同一个翻译单元中,并防止链接错误,但是,当然标准库头有自己的。

但是,请注意,如果您在不需要它们的源文件中包含头文件,那么它可能会增加您的编译并导致命名空间名称的污染。

于 2012-04-15T04:08:58.693 回答