c++ - C++:当顺序真的很重要时,如何保证在项目中包含头文件的顺序
问题描述
之所以提出这个问题,是因为在某些情况下,包含顺序确实很重要。例如,如LearnOpenGL或GLFW 文档中所述, glad.h
必须在glfw3.h
.
对于包含标头,我一直遵循每个文件应仅显式包含其必要标头的规则,并且标头都应具有包含保护。
于是问题就来了。在一个项目中,有些文件只需要glfw3.h
,有些只需要glad.h
. 那么在编译的时候,如何保证编译器总是glad.h
先读glfw3.h
呢?
我能想到的两个解决方案是:
- 在将源文件提供给编译器时手动排列源文件的顺序。
- 编写一个名为的新头文件
glad_glfw.h
,其中包含按正确顺序的两个头文件。然后任何其他需要包含两者中的任何一个的文件都包括glad_glfw.h
.
我认为 1. 当项目变大时最终会很困难,并且 2. 有点违反最小包含规则。所以我想问是否有更好的方法来做到这一点?
解决方案
还有一个选项——“选项 3”,也许是——将这些头文件包含在“预编译头文件”中。如果您希望头文件本身很少(如果有的话)更改,这将特别有用。
推荐阅读
- batch-file - 从变量中设置选择命令选项
- php - 显示类别名称
- matplotlib - 如图所示,如何在一个图中绘制极坐标和笛卡尔子图
- python - _arpack 的 DLL 加载失败
- string - 计算带有可选部分的字符串的所有可能性
- java - 如何使用基于 JDK 11 的 Java 应用程序使用 Java soap Web 服务
- ios - 在 iOS 上使用 avaudioengine 会破坏 avplayer
- java - Java 的 .sort() 方法打破了 while 循环
- robotframework - 测试动态表 RobotFrameowrok
- c# - 正则表达式 - 提取外部范围匹配值