C 宏定义中的##和#的区别

文章作者 100test 发表时间 2008:03:31 11:36:17
来源 100Test.Com百考试题网


我们用一来实例来学习一下C 宏定义中的## 和#的区别,首先我们来定义一个宏:#define STRCPY(a, b) strcpy(a ## _p, #b)

1. 宏定义里面有个##表示把字符串联在一起。如:
#include

#define CAT(x,y) x##y

int main()
{
printf("%s", CAT("hello", " world")).
return 0.
}
2.宏定义中的#表示将其变为字符串。如:
#include
#include

#define STRCPY(a, b) strcpy(a ##_p, #b)
int main()
{
char arrr_p[]="abcdefg".
char *b = "123456".
STRCPY(arrr, b).

return 0.
}
结果为把b变成了字符串,可见#b的功能是将所有类型名都变成了字符串。 另,a、_p和##有没有空格不影响结果。


相关文章


报检员考试模拟试题题库(一)
计算一个数的二进制表示中有多少个1
malloc()以及free()的机制研究学习
谈谈C 内存越界问题及解决方法
C 宏定义中的##和#的区别
C 和Python使用同一个枚举的方法
C 中文件的读写实现方法
2007年报关员考试辅导资料出口贸易的基本业务程序
C 数值类型转换方法
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛