如果我没有将类声明和定义分开,而是将我的类定义放在头文件中,那么是否会为包含该头文件的每个源文件重新编译此定义代码?
问问题
396 次
1 回答
3
它为每个翻译单元编译一次(然后从中构建目标文件)。除非您在编译器中使用某种形式的预编译头功能。
您通常在标题中放置的多重包含保护是为了避免仅在同一个翻译单元中进行多次编译。除非标头的编译结果已经被编译器的预编译标头机制存储在某个地方,否则标头将需要在下一个翻译单元中再次编译。
这就是为什么 C++ 代码的编译速度往往比 C 代码慢的原因之一,以及为什么正确使用前向声明和避免不需要的#include
语句很重要的原因之一。我已经看到通过使用前向声明而不是包含整个标题来将构建时间缩短一半的情况。
于 2012-12-01T16:48:04.303 回答