C++:当顺序真正重要时,如何保证在项目中包含头文件的顺序
C++: How to guarantee include order of header files in a project when the order really matters
提出这个问题是因为在某些情况下,包含顺序真的很重要。例如,正如 LearnOpenGL 或 GLFW 文档所述,glad.h
必须在glfw3.h
之前包含在 .
对于包含标头,我一直遵循规则,即每个文件应仅明确包含其必要的标头,并且标头都应包含保护。
因此问题来了。在项目中,有些文件只需要glfw3.h
,有些只需要glad.h
。那么在编译的时候,如何保证编译器总是先读glad.h
再glfw3.h
呢?
我能想到的两个解决方案是:
- 在将源文件馈送到编译器时手动排列源文件的顺序。
- 编写一个名为
glad_glfw.h
的新头文件,该文件以正确的顺序包含两个头文件。然后,需要包含两者中的任何一个的任何其他文件都包括glad_glfw.h
。
我认为 1. 当项目变大时最终会很困难,2. 有点违反最小包含规则。所以我想问一下是否有更好的方法可以做到这一点?
我通常使用#pragma once
作为包含保护。
比 #ifdef 的更不容易出错,但它有点不标准。
https://en.wikipedia.org/wiki/Pragma_once
另一种选择——也许是"选项 3"——是将这些头文件包含在"预编译头文件"中。 如果您预计头文件本身很少(如果有的话(更改,这将特别有用。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 无法在 CLion 中构建 C++ 项目
- 运行同一解决方案的另一个项目的项目
- CMake-按正确顺序将项目与C运行时对象文件链接
- 函数调用中参数的顺序重要吗
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 欧拉项目#8答案是大以获得有效答案
- 从链接列表c++中删除一个项目
- 为什么不;名字在地图上是按顺序排列的吗
- 如何配置 CMake 以特定顺序构建多个项目?
- C++:当顺序真正重要时,如何保证在项目中包含头文件的顺序
- 如何修改函数以按C++的排序顺序插入每个项目
- 在Qt Android项目中使用OpenCV时的链接顺序
- 更改列表框项目顺序
- 如何简单地按字母顺序对wxListCtrl的项目进行排序
- 如何在cdt eclipse中为c++项目确定正确的链接器顺序
- 如何在实践中解决项目编译中链接库的顺序问题
- 项目依赖顺序- VS2013
- 在每次迭代中以不同顺序循环遍历项目列表
- Q图形项目插入顺序