在一个下午
#ifndef _PATIONAL_H
#define _PATIONAL_H//问题出处
//此处省略大量代码
#endif
请问#define 的格式不是还要有个定义的东西,例如 #define A a中的a,即把A宏定义为a,可是文件防止头文件重复中的#define _PATIONAL_H后并没有将_PATIONAL_H宏定义为什么具体写出来,为什么呢
#ifndef x //先测试x是否被宏定义过
#define x //定义一个宏,只需要定义该宏,它的值是什么无所谓,不会用到
#define 是用来做宏定义的。
语法当中,#define 后面可以有两个部分,一个是宏名称,另一个是可以被替换的表达式。
并且,语法当中,是可以省略后面表达式的部分的(如果表达式部分没有什么用处的话)。
为什么防止重复导入的宏定义里面,没有后面要替换的表达式?
因为没有必要吧。
防止重复导入的宏,作用就是防止重复被导入,后面即使添加了要替换的部分,在后续代码中,也不会使用到呀。
所以,专款专用,防止重复导入的宏,后面就省略要替换的部分了,反正其他地方也用不到,我们只要判断是否被定义过就可以了。