这个问题是讨论 C++ 命名约定的几个问题之一,包括警卫。问这个问题的人认为这个命名约定:
#ifndef FOO_H
#define FOO_H
// ...
#endif
单独使用时有点不直观(这是什么FOO_H
意思?),我倾向于同意。
其他人则说,除非需要添加更多内容以更好地避免碰撞(PROJECTNAME_FOO_H_SDFFGH69876GF
如FOO_H
清楚它是一个包含守卫)。
如果拥有的唯一目的是FOO_H
防止多重包含,我可以购买它,但是我希望FOO_H
在文件的其他地方有条件吗?我认为条件编译将是一个很好的理由,在这种情况下,将其命名为类似的名称FOO_H_INCLUDED
会更清楚。
是否有类似的直接用途,或者我应该避免重新利用包含警卫?