#define 中 的“##”与“#”

来源:互联网 发布:阿里云服务器控制面板 编辑:程序博客网 时间:2024/04/26 15:39

#include <stdio.h>#define test(n) printf("test("#n")=%d\n",val##n)#define a #aint main(){int val3=10;int val8=23;test(3);test(8); }

在#define中定义了“#”,“##”两种操作。“#”用来把参数转换成字符串,“##”则用来连接前后两个参数,把他们变成一个字符串。

看结果:


#n为一个指向字符串"n"的char 类指针。

#include <stdio.h>#define test(n) printf("test("#n")=%d\n",val##n)#define sfffff(a) #aint main(){int val3=10;int val8=23;char *p=sfffff(1234);test(3);test(8);for (;(*p)!=(char)0;p++){printf("%c\n",*p);}printf("%d\n",*p);}

看结果:


最后面那个0是字符串结果符。‘\0’;

下面说一下string##n,## 会将n变成字符串然后与其前面的结合,将结合后的变成一个变量名。而不是字符串指针。


	
				
		
原创粉丝点击