为了加速大型源文件的编译,修剪翻译单元中使用的标头数量是否更有意义,或者编译代码的成本是否远远超过处理包含保护的时间标头?
如果后者是真的,那么工程工作最好花在创建更多、轻量级的标头上,而不是更少。
那么,现代编译器需要多长时间才能处理有效包含保护的标头?在什么时候包含此类标头会影响编译性能?
(相关这个问题 https://stackoverflow.com/questions/6685457/header-file-inclusion-static-analysis-tools)
前几天我读到了有关此问题的常见问题解答......首先,写下correctheaders,即包含您使用的所有标头,并且不依赖于未记录的依赖项(可能会发生变化)。
其次,编译器现在通常会识别包含保护,因此它们相当高效。但是,您仍然需要open很多文件,这可能会成为大型项目的负担。一个建议是这样做:
头文件:
// file.hpp
#ifndef H_FILE
#define H_FILE
/* ... */
#endif
现在要使用源文件中的标头,请添加一个额外的#ifndef
:
// source.cpp
#ifndef H_FILE
# include <file.hpp>
#endif
源文件中的噪音会更大,并且您需要可预测的包含保护名称,但您可能会避免大量类似的包含指令。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)