V. *_* L. 5 c++ performance compilation include-guards header-files
我在某处读到(抱歉,再也找不到链接了)在标题的第一行应该始终是 #include 保护,因为编译器可以在不打开头文件的情况下看到它。因此,如果头文件已经包含在内,它不会打开文件只是为了再次关闭它,这会加快构建过程。
但是我总是在每个文件的开头都有一个注释块。所以我的问题是,#include 守卫应该写在注释块之前还是之后?
这种风格更好吗:
///////////////////////
// Name: code.h
// Author: Me
// Date: dd.mm.yyyy
// Description: This code executes a specific task
///////////////////////
#ifndef CODE_H_
#define CODE_H_
...
#endif
Run Code Online (Sandbox Code Playgroud)
或者这种风格更好:
#ifndef CODE_H_
#define CODE_H_
///////////////////////
// Name: code.h
// Author: Me
// Date: dd.mm.yyyy
// Description: This code executes a specific task
///////////////////////
...
#endif
Run Code Online (Sandbox Code Playgroud)
或者根本就没有关系?
根据我和其他人的经验
花费时间的不是文件的解析和读取,而是各种优化和代码生成过程
因此,对于大型项目的构建时间来说,打开文件来解析包含保护应该可以忽略不计。
我的意思是这不可能是程序的瓶颈!
因此,选择您喜欢的任何一种风格,这实际上是基于意见的。
这里发现了另一个有趣的评论:
曾几何时,可能有一两个编译器愚蠢到每次都打开文件来检查包含保护。本世纪生产的任何编译器都不会这样做,因为它只能保留一个文件表并包含防护措施并在打开文件之前查阅该表。
在文件范围的 include-guards中阅读更多内容。