c语言宏定义中##和#字符

c语言宏定义中##和#字符

#define osThreadDef(name, thread, priority, instances, stacksz)  \
const osThreadDef_t os_thread_def_##name = \
{ #name, (thread), (priority), (instances), (stacksz)}


上诉宏定义中出现了##和# 符号,其中

##是一个连接符号,用于把参数连在一起;   

#是“字符串化”的意思。出现在宏定义中的#是把跟在后面的参数转换成一个字符串。

 例如:

#define paster( n ) printf( "token" #n" = %d\n ", token##n )

所以paster(9);就是相当于 printf("token 9 = %d\n",token9);

那么osThreadDef(Task_LED1, Func_LED1, osPriorityNormal, 0, 128);等价于下面的定义

#defineosThreadDef(Task_LED1, Func_LED1, osPriorityNormal, 0, 128) \
const osThreadDef_t os_thread_def_Task_LED1 = { Task_LED1,Func_LED1,osPriorityNormal, 0, 128}
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014470361/article/details/80687900
个人分类: C语言
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭