关于c ++:预处理程序指令:为什么带#define的头文件的标识符与头文件名不同

Preprocessor directive: Why Identifier for header file with #define is not same as header file name

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
#ifndef MYHEADER_H
#define MYHEADER_H
...
#endif

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

1
2
3
4
#ifndef myheader.h
#define myheader.h
...
#endif

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


领先的下划线加上大写字母表示它是由C++实现定义的名称,因为这个表单是为实现保留的,或者是一个在系统标题中看到的人所定义的名字,而只是拷贝CAT而不理解它。