我在项目的所有代码文件中都包含了几个STL头文件,比如list和vector。我知道对于我自己的头,我应该使用包含防护,但是对于这个场景,当它们不是由我定义的时候呢?
在我的每个文件中都包含相同的头文件是不是很糟糕?每次包含它都会有性能损失吗?
发布于 2012-04-15 12:09:21
没有性能成本。标准的头文件有自己的include guards,所有的include guards都是由预处理器优化的,所以文件不会每次都被重新加载。
正确性和可维护性始终是…首先关注的问题当你重新排列文件并得到“未定义的标识符”错误时,你必须节省多少编译时间来弥补修复工作所花费的时间,或者更糟!
编辑:从所有的头文件中包含相同的标准头文件,不会增加性能成本。从源文件中包含额外的标准标头会产生一些性能成本。这个问题有点模棱两可,…但是,无论哪种方式,C++编译真正昂贵的部分通常是模板实例化,而不是解析文本。
发布于 2012-04-15 12:08:59
作为一般规则,
只有在源文件需要头文件时,才能包含它。
包含保护将防止相同的头文件被多次包含在同一个翻译单元中,并防止链接错误。当然,标准库的头文件也有自己的头文件。
但是,请注意,如果您将头文件包含在不需要它们的源文件中,那么它可能会增加您的编译并导致名称空间名称的污染。
https://stackoverflow.com/questions/10159404
复制相似问题