CppCoreGuidelines SF.8 每个头文件都要加上
17 November 2023
“Use #include
guards for all header files”
理由
避免头文件被包含了多次。为了避免头文件包含保护本身的冲突,不要仅仅按照头文件名来命名包含保护宏。最好包含一个关键字和可区分的名字。比如代码库或组件的名字。
例子
// file foobar.h: #ifndef LIBRARY_FOOBAR_H #define LIBRARY_FOOBAR_H // ... declarations ... #endif // LIBRARY_FOOBAR_H
强化
标记没有 #include
包含保护的 .h
头文件。
注意
有些语言的实现通过像 @pragma once
这种方式来进行包含保护。但是,这种方式不是标准定义的,缺少移植性。它是在你的程序中注入主机文件系统语义信息来实现的。用这种方式,也会让你的程序锁定在特定语言实现厂商。我们还是建议按照 ISO C++ 进行开发。请查看规则:P.2