一、 宏定义
1. 不带参数的宏定义
用一个指定的标识符(即名字)来代表一个字符串,它的一般形式为
’#define标识符 字符串(这就是在前文已经介绍过的定义符号常量)
例:#define PI 3.1415926
它的作用是在本程序文件中用指定的标识符PI来代替“3.1415926”这个字符串,在编译预处理时,将程序中在该命令以后出现的所有的PI都用“3.1415926”代替。
有关宏定义的使用,需注意以下几点:
1 )宏名习惯采用大写,以便与普通变量区分;
2 )宏定义不是C语句,所以不能在行尾加分号;否则,宏展开时,会将分号也算在内
3 )在宏展开时,预处理程序仅按宏定义简单替换宏名,不做任何检查。如果有错误,只能由编译器在编译宏展开后的源程序时发现。
4 )宏定义的位置是任意的,宏名的有效范围是从定义命令处到本模块结束。通常写在文件开头处。
5 )宏调用时,是原样替换,不进行任何转换。
1. 不带参数的宏定义
用一个指定的标识符(即名字)来代表一个字符串,它的一般形式为
’#define标识符 字符串(这就是在前文已经介绍过的定义符号常量)
例:#define PI 3.1415926
它的作用是在本程序文件中用指定的标识符PI来代替“3.1415926”这个字符串,在编译预处理时,将程序中在该命令以后出现的所有的PI都用“3.1415926”代替。
有关宏定义的使用,需注意以下几点:
1 )宏名习惯采用大写,以便与普通变量区分;
2 )宏定义不是C语句,所以不能在行尾加分号;否则,宏展开时,会将分号也算在内
3 )在宏展开时,预处理程序仅按宏定义简单替换宏名,不做任何检查。如果有错误,只能由编译器在编译宏展开后的源程序时发现。
4 )宏定义的位置是任意的,宏名的有效范围是从定义命令处到本模块结束。通常写在文件开头处。
5 )宏调用时,是原样替换,不进行任何转换。