#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 }

 

  
posted @ 2015-01-17 18:55  王权伟  阅读(4295)  评论(0编辑  收藏  举报