我在我项目的所有代码文件中都包含了几个STL标题,例如list和vector。我知道我自己应该使用包括警卫的标题,但是当它们没有被我定义时,这种情况怎么样呢?
在我的每个文件中包含相同的标题是不是很糟糕?是否每次都包含性能损失?
答案 0 :(得分:1)
没有性能成本。标准头文件有自己的包含警戒,所有包含警戒都由预处理器优化,因此每次都不会重新加载文件。
正确性和可维护性始终是首要关注的问题...当您重新排列文件并获得“未定义的标识符”错误时,您需要节省多少编译时间来弥补修复工作所花费的时间,或者更糟糕!
编辑:没有性能成本,包括所有头文件中的相同标准标头。从源文件中包含其他标准标头会有一些性能成本。问题有点模棱两可......但无论哪种方式,C ++编译中非常昂贵的部分通常是模板实例化,而不是解析文本。
答案 1 :(得分:0)
作为一般规则,
只有在源文件需要时才包含头文件。
包含防护可以防止同一个头文件被多次包含在同一个翻译单元中,并防止链接错误,但是,Ofcourse标准库头文件都有自己的。
但是,请注意,如果您在源文件中包含不需要它们的头文件,那么它可能会增加您的编译和放大。导致命名空间名称的污染。