C语言学习路上点滴之一
2013-03-19 09:11 码农路上 阅读(356) 评论(4) 收藏 举报对预处理器运算符##的理解:
1 #define paste(front,back) front##back 2 int main() 3 { 4 char *name1,*name2; 5 paste(name,2)="hello world"; 6 printf("%s\n",name2); 7 }
##的作用是将两个形参front和back直接连接起来 ,即使front和back这两个是变量,在调用paste宏前都已经赋值,最后结果依然还是将"front"和"back"这两个字符串连接起来充当一个新的变量名.所以上面代码中paste(name,2)即代表name2的这个变量,因此上面代码等价于:
1 #define paste(front,back) front##back 2 int main() 3 { 4 char *name1,*name2; 5 name2="hello world"; 6 printf("%s\n",name2); 7 }
最后打印结果为hello world;
那么##啥时候能派上用场呢?
我想它主要用于:当只有在运行时才能确定要调用哪个变量或者函数时,就可以利用##来动态地构造要调用的变量或者函数名称.
浙公网安备 33010602011771号