宏定义(define)和可变参数函数(variable arguments)
1,宏定义(define)
- 宏定义是在编译时对程序进行文本替换,在宏定义替换过程中,只有字符串替换操作,没有运算操作
- 宏定义分两种,一是普通的无参数宏定义;二是带实参的宏定义;
(1) 无参数宏定义
#define 宏名(标识符) 替换的文本
范例:
#define PI 3.14
double i = PI;
--> 编译时,替换
double i = 3.14;
#define N 5
#define NN N.123
double b = NN;
--> 编译时,替换
--> b = 5.123
(2) 有参数宏定义
#define 宏名(标识符) (参数列表) 替换文本
- 由于宏是字符串替换,参数列表里面的参数都是字符串,故参数列表的参数是不带类型的参数,只代表一个替换字符串
- 宏名代表了宏,无需带有参数列表
- 替换文本知识被当做文本,进行指定字符串替换
范例:
#define MESSAGE(type) { printf("%s\n", type); }
MESSAGE("WARNING:\n");
--> 编译时,替换
{
printf("%s\n", "WARNING:\n");}
--> WARNING: