[英]C++: How to guarantee include order of header files in a project when the order really matters
提出问题是因为在某些情况下包含顺序确实很重要。 例如,如在所述LearnOpenGL或GLFW DOC , glad.h
必须包含前glfw3.h
。
对于包含标头,我一直遵循以下规则:每个文件应仅明确包含其必要的标头,并且标头均应包含防护。
因此问题来了。 在项目中,有些文件只需要glfw3.h
而有些只需要glad.h
。 然后在编译时,如何确保编译器始终在glad.h
之前读取glfw3.h
?
我能想到的两个解决方案是:
glad_glfw.h
的新头文件,其中包含正确顺序的两个头。 然后,需要包含两个文件中的任何一个的其他文件都包含了glad_glfw.h
。 我认为1.随着项目的扩大,最终将变得困难,并且2.违反了最小包含规则。 所以我想问是否有更好的方法来做到这一点?
我通常#pragma once
将#pragma once
用作包含保护。
与#ifdef相比,程序员更容易出错,但这是非标准的。
另一个选项-也许是“选项3”-将那些头文件包含在“ 预编译头”中 。 如果您希望头文件本身很少更改(如果曾经更改),则此功能特别有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.