prr*_*prr 1 c++ include-guards c-preprocessor
在为包含守卫选择名字时,是否有人遵循的指导方针?我不明白为什么.h文件的名称与include guard中使用的名称略有不同.例如,我见过sphere.h然后#ifndef SPHERE_H_.我可以轻易地使用SPHERE_或者名称必须匹配吗?下划线也是必要的吗?
要为头球卫士选择一个好名字,请考虑以下几点:
1)名称必须是唯一的,所以使它长而具体.这通常可以通过包含项目名称,模块名称,文件名和文件扩展名等内容来实现.
2)确保不使用为实现保留的名称.因此,以下划线后跟大写字母开头的名称以及包含双下划线的名称,以_t结尾的名称等等.
3)使名字对人类读者有意义.所以不要只生成UUID并使用它.
4)约定规定你使用全部大写的宏来区分它们与普通变量.
底线不是必要,因为这样的,但因为你不能在宏名称中使用空格,强调作为一个很好的选择让事情变得可读.
所以,恕我直言,项目baz内的子模块栏中文件foo.h的一个很好的防护名称是:BAZ_BAR_FOO_H.