定义时的值。宏最常见的用法是定义代表某个值的全局符号。宏的第二种用法是定义带参
数的宏,这样的宏可以象函数一样被调用,但它是在调用语句处展开宏,并用调用时的
实际参数来代替定义中的形式参数。
1.#define 指令
#define 预处理指令是用来定义宏的。该指令最简单的格式是:首先神明一个标识符,然后
给出这个标识符代表的代码。在后面的源代码中,就用这些代码来替代该标识符。这种宏
把程序中要用到的一些全局值提取出来,赋给一些记忆标识符。
#defineMAX_NUM10
intarray[MAX_NUM];
for(i=0;i<MAX_NUM;i++)/*……*/
在这个例子中,对于阅读该程序的人来说,符号 MAX_NUM 就有特定的含义,它代表的
值给出了数组所能容纳的最大元素数目。程序中可以多次使用这个值。作为一种约定,习
惯上总是全部用大写字母来定义宏,这样易于把程序红的宏标识符和一般变量标识符区
别开来。如果想要改变数组的大小,只需要更改宏定义并重新编译程序即可。
宏表示的值可以是一个常量表达式,其中允许包括前面已经定义的宏标识符。例如:
#defineONE1
#defineTWO2
#defineTHREE(ONE+TWO)
注意上面的宏定义使用了括号。尽管它们并不是必须的。但出于谨慎考虑,还是应该加上
括号的。例如:
six=THREE*TWO;
预处理过程把上面的一行代码转换成:
six=(ONE+TWO)*TWO;
如果没有那个括号,就转换成 six=ONE+TWO*TWO;了。
宏还可以代表一个字符串常量,例如:
#defineVERSION"Version1.0Copyright(c)2003"
2.带参数的#define 指令
带参数的宏和函数调用看起来有些相似。看一个例子: