c++ - 用于包括 guard 的名称?

标签 c++ c-preprocessor include-guards

人们在为他们的 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/

相关文章:

c++ - 从基类实例调用派生类方法

c++ - 通过引用返回时的返回值优化

c - 包含文件似乎被忽略

include - 如何从 Nim 中的导入失败中恢复?

c++ - 指针错误传值

c++,将任何类型(模板T)的数据打印到控制台

c - 在编译时选择一个函数

c++ - 如何使用预处理器从源文件中获取文本行?

c++ - 无尽的包含循环

c++ - ‘-’ token 之前应有非限定 ID