为什么c ++ Header Guards在大写字母和下划线中都有名字?

时间:2014-05-11 03:25:28

标签: 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

2 个答案:

答案 0 :(得分:5)

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

还有一种约定,即预处理程序定义(尤其是预处理程序宏)使用全大写名称,以区别于非预处理程序标识符。 (但这不是一个严格的规则;例如,errno通常是一个宏,但它不是大写的。)

答案 1 :(得分:2)

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