Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么c++;标题保护名称(大写)和下划线?_C++_Guard_Capitalize - Fatal编程技术网

C++ 为什么c++;标题保护名称(大写)和下划线?

C++ 为什么c++;标题保护名称(大写)和下划线?,c++,guard,capitalize,C++,Guard,Capitalize,我注意到.h文件的名称大写,并使用下划线作为标题保护…为什么 例如,“doThat.h” 收割台护罩应为: #ifndef DO_THAT_H #define DO_THAT_H 为什么要这样大写和下划线?即使在main.cpp中,您只需键入#include“doThat.h”即可使用该文件??这有一些真正的编程原因吗?为什么不直接键入: #ifndef doThat.h #define doThat.h 预处理器定义必须使用有效的标识符。点在标识符中无效 还有一种约定,即预处理器定义(尤其

我注意到.h文件的名称大写,并使用下划线作为标题保护…为什么

例如,“doThat.h”

收割台护罩应为:

#ifndef DO_THAT_H
#define DO_THAT_H
为什么要这样大写和下划线?即使在main.cpp中,您只需键入
#include“doThat.h”
即可使用该文件??这有一些真正的编程原因吗?为什么不直接键入:

#ifndef doThat.h
#define doThat.h

预处理器定义必须使用有效的标识符。点在标识符中无效


还有一种约定,即预处理器定义(尤其是预处理器宏)使用所有大写名称,以区别于非预处理器标识符。(虽然这不是一个硬性规则;例如,
errno
通常是一个宏,但它不是大写。)

这只是一个命名约定,不是硬性规则。例如,
DOTHAT_H
DOTHAT
DOTHAT
的情况并不少见。重要的是,
#define
使用一个与其他文件不冲突的唯一标识符。通常会使用调用文件名的一些变体。

更好的问题是,为什么不只键入一次
#pragma
。这是事实上的标准,这对不突出显示语法的终端特别有用。使用大写的预处理器指令使它们易于区分。非预处理器标识符的示例是什么?抱歉,我是一个noob:(@user3624683预处理器标识符是由程序处理的标识符,通常称为
cpp
;通常,这是使用
#define
(或通过编译器的
-D
选项)创建的任何东西),尽管有一些内置的预处理器标识符,如
\uu cplusplus
。根据定义,任何未经预处理器处理的标识符都是非预处理器标识符。大多数变量和函数名都是非预处理器标识符。