在宏定义中##用于连接两部分,#用于将参数扩展成为字符串结构,也就是为变量加“”。
实例:
#define add(some,new) some_##new
那么add(view,pic)将被编译为view_pic
#define prt(name) printf(#name)
那么 prt(error)将被编译为 printf("error");
输出为
this is audi with good
this is bmw with better
实例:
#define add(some,new) some_##new
那么add(view,pic)将被编译为view_pic
#define prt(name) printf(#name)
那么 prt(error)将被编译为 printf("error");
程序示例:
1 #include <stdio.h>
2
3 #define print(name,value) print_##name(#value);
4
5 int print_audi(char *p){
6 printf("this is audi with %s \n",p);
7 return 0;
8 }
9 int print_bmw(char *p){
10 printf("this is bmw with %s \n",p);
11 return 0;
12 }
13 int main(){
14
15 print(audi,good);
16 print(bmw,better);
17
18 return 0;
19 }
输出为
this is audi with good
this is bmw with better