在宏定义中##用于连接两部分,#用于将参数扩展成为字符串结构,也就是为变量加“”。
实例:
#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
本文介绍C预处理器中的宏定义使用技巧,重点讲解了如何利用##和#操作符进行字符串化和连接,通过具体代码示例展示了如何实现动态函数调用。
592

被折叠的 条评论
为什么被折叠?



