#define及其用法
#define
在#define中,标准只定义了#和##两种操作。#用来把参数转换成字符串,##则用来连接前后两个参数,把它们变成一个字符 串。
1 #include<stdio.h> 2 #define paster(n) printf("token"#n"=%d\n",token##n) 3 4 int main(int argc,char *argv[]) 5 { 6 int token9=10; 7 paster(9); 8 return 0; 9 } 10 输出为:token 9 = 10
无参宏定义的一般形式为:#define 标识符 字符串
其中的“#”表示这是一条预处理命令。凡是以“#”开头的均为预处理命令。“define”为宏定义命令。“标识符”为所定义的宏名。“字符串”可以是常数、表达式、格式串等。
例如: #define M (a+b) 它的作用是指定标识符M来代替表达式(a+b)。在编写源程序时,所有的(a+b)都可由M代替,而对源程序作编译时,将先由预处理程序进行宏 代换,即用(a+b)表达式去置换所有的宏名M,然后再进行编译。
1 #include<stdio.h> 2 #defineM(a+b) 3 4 int main(intargc,char*argv[]) 5 { 6 ints,a,b; 7 printf("inputnumbera&b:"); 8 scanf("%d%d",&a,&b); 9 s=M*M; 10 printf("s=%d\n",s); 11 }
带参的宏定义一般形式为: #define 宏名(形参表) 字符串
1 #include<stdio.h> 2 #define MAX(a,b)((a>b)?(a):(b)) 3 4 int main(intargc,char*argv[]) 5 { 6 intx,y,max; 7 printf("inputtwonumbers:"); 8 scanf("%d%d",&x,&y); 9 max=MAX(x,y); 10 printf("max=%d\n",max); 11 return0; 12 }