何时不在头文件中使用include guard?

Lon*_*ove 17 c c++ include-guards

我们都知道何时使用包括警卫,但何时不在我们的项目中使用它?

最近,我看到了一个混合编译项目(CUDA + GCC),一个头文件(CUDA文件)被故意留下而没有包括后卫.我只是好奇.

Mic*_*urr 13

我头脑中有两种情况:

  1. 当你想打开/关闭调试功能时(如何assert.h工作)
  2. 对于'x-macro'类型的功能,你有include文件执行2部分问题,例如定义枚举然后定义对应于枚举的字符串化名称数组