我们都知道什么时候应该使用include guard,但是什么时候我们不应该在项目中使用它呢?
最近,我看到了一个混合编译(CUDA + GCC)的项目,其中一个头文件(CUDA文件)故意没有包含保护。我只是对它很好奇。
发布于 2011-07-23 00:44:05
一种情况是,您确实希望使用不同的参数多次包含同一文件。在这种情况下,包含文件将充当一种模板。Dosbox上的scalers就是一个例子。
发布于 2015-09-17 18:30:10
在我们的项目中,我们从不使用include guard。我们使用的是include antiguard:
#ifndef _stdafx_h_
#define _stdafx_h_
#else
#error reinclude stdafx.h
#endif
因为如果您重新包含相同的头文件--您编写了错误的代码或使用了错误的体系结构。
发布于 2011-07-23 00:44:18
包含保护的使用使得包含文件可以在单个编译单元中被多次包含,而不会导致重复声明。
当文件应该多次包含在单个编译单元中,并且这不会导致重复声明时,请不要使用包含保护。
https://stackoverflow.com/questions/6793161
复制相似问题