人们在为他们的 include guard 选择名称时是否倾向于遵循任何准则?我不明白为什么 .h 文件的名称会与 include guard 中使用的名称略有不同。例如,我看到了 sphere.h,然后是 #ifndef SPHERE_H_
。我可以很容易地使用 SPHERE_
还是名称必须匹配?下划线也是必须的吗?
最佳答案
要为头球后卫取一个好名字,请考虑以下几点:
1) 名称必须是唯一的,所以要长而具体。这通常可以通过包含项目名称、模块名称、文件名和文件扩展名等内容来实现。
2) 确保您不使用为实现保留的名称。因此,以下划线开头后跟大写字母的名称、包含双下划线的名称、以 _t 结尾的名称以及其他一些名称都已过时。
3) 使名称对人类读者有意义。所以不要只生成一个 UUID 并使用它。
4) 约定要求您使用全部大写的宏来区别于普通变量。
下划线不是需要的,本身,但由于您不能在宏名称中使用空格,因此下划线是保持可读性的好选择。
因此,恕我直言,项目 baz 内的子模块栏中的文件 foo.h 的一个好的保护名称是:BAZ_BAR_FOO_H。
关于c++ - 用于包括 guard 的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50355923/