【问题标题】:Preprocessor directive: Why Identifier for header file with #define is not same as header file name [duplicate]预处理器指令:为什么带有#define的头文件的标识符与头文件名不同[重复]
【发布时间】:2017-07-16 06:04:21
【问题描述】:

为什么在 myheader.h 中,我们写:

#ifndef MYHEADER_H
#define MYHEADER_H
...
#endif

因为,标识符区分大小写(小写和大写字母是不同的),并且每个字符都很重要。以上内容如何有效?应该是

#ifndef myheader.h
#define myheader.h
...
#endif

下划线的用途是什么?如果我有 2 个单独的头文件,名称分别为:MyHeader.h 和 myheader.h,预处理器如何区分它们?

【问题讨论】:

标签: c++ c-preprocessor


【解决方案1】:

前导下划线后跟大写表示它要么是由 C++ 实现定义的名称,因为这种形式是为实现保留的,要么是由在系统头文件中看到此内容并只是模仿采用的人定义的名称没看懂。

【讨论】:

  • 那么对于用户定义的头文件,我们不应该包括前导下划线吗?
  • @Nikhil:对。还要避免使用其他保留形式,即 (1) 任意位置的两个连续下划线,或 (2) 全局命名空间中名称中的前导下划线。
猜你喜欢
  • 1970-01-01
  • 2023-03-19
  • 2020-07-20
  • 2011-06-15
  • 1970-01-01
  • 2016-09-15
  • 2012-11-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多