繁体   English   中英

C ++:当顺序真正重要时,如何保证在项目中包括头文件的顺序

[英]C++: How to guarantee include order of header files in a project when the order really matters

提出问题是因为在某些情况下包含顺序确实很重要。 例如,如在所述LearnOpenGLGLFW DOCglad.h必须包含前glfw3.h

对于包含标头,我一直遵循以下规则:每个文件应仅明确包含其必要的标头,并且标头均应包含防护。

因此问题来了。 在项目中,有些文件只需要glfw3.h而有些只需要glad.h 然后在编译时,如何确保编译器始终在glad.h之前读取glfw3.h

我能想到的两个解决方案是:

  1. 在将源文件提供给编译器时,手动排列源文件的顺序。
  2. 编写一个名为glad_glfw.h的新头文件,其中包含正确顺序的两个头。 然后,需要包含两个文件中的任何一个的其他文件都包含了glad_glfw.h

我认为1.随着项目的扩大,最终将变得困难,并且2.违反了最小包含规则。 所以我想问是否有更好的方法来做到这一点?

我通常#pragma once#pragma once用作包含保护。

与#ifdef相比,程序员更容易出错,但这是非标准的。

https://en.wikipedia.org/wiki/Pragma_once

另一个选项-也许是“选项3”-将那些头文件包含在“ 预编译头”中 如果您希望头文件本身很少更改(如果曾经更改),则此功能特别有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM