用于包括警卫的姓名?

prr*_*prr 1 c++ include-guards c-preprocessor

在为包含守卫选择名字时,是否有人遵循的指导方针?我不明白为什么.h文件的名称与include guard中使用的名称略有不同.例如,我见过sphere.h然后#ifndef SPHERE_H_.我可以轻易地使用SPHERE_或者名称必须匹配吗?下划线也是必要的吗?

Jes*_*uhl 5

要为头球卫士选择一个好名字,请考虑以下几点:

1)名称必须是唯一的,所以使它长而具体.这通常可以通过包含项目名称,模块名称,文件名和文件扩展名等内容来实现.

2)确保不使用为实现保留的名称.因此,以下划线后跟大写字母开头的名称以及包含双下划线的名称,以_t结尾的名称等等.

3)使名字对人类读者有意义.所以不要只生成UUID并使用它.

4)约定规定你使用全部大写的宏来区分它们与普通变量.

底线不是必要,因为这样的,但因为你不能在宏名称中使用空格,强调作为一个很好的选择让事情变得可读.

所以,恕我直言,项目baz内的子模块栏中文件foo.h的一个很好的防护名称是:BAZ_BAR_FOO_H.