码迷,mamicode.com
首页 > 系统相关 > 详细

linux c 宏定义

时间:2019-01-05 10:48:22      阅读:291      评论:0      收藏:0      [点我收藏+]

标签:现在   程序员   一个   printf   paste   aabb   否则   预处理   print   

#if 1
#define DEBUGP(fmt, ...) printf("%s(%d): "fmt"\n", __func__, __LINE__, ##__VA_ARGS__)
#else
#define DEBUGP(fmt, ...)
#endif

 

将宏的值转换为字符串

#define __STR__(s)     #s
#define STR(s) __STR__(s)

 

#define SETMAC_FACTORY_START 0x7ec0000

STR(SETMAC_FACTORY_START ) // 转换完后 "0x7ec0000"

 

 

#运算符 
出现在宏定义中的#运算符把跟在其后的参数转换成一个字符串。有时把这种用法的#称为字符串化运算符。例如:

#definePASTE(n)"adhfkj"#n

main()
{
printf("%s/n",PASTE(15));
}
宏定义中的#运算符告诉预处理程序,把源代码中任何传递给该宏的参数转换成一个字符串。所以输出应该是adhfkj15。

##运算符 
##运算符用于把参数连接到一起。预处理程序把出现在##两侧的参数合并成一个符号。看下面的例子:

#defineNUM(a,b,c)a##b##c
#defineSTR(a,b,c)a##b##c

main()
{
printf("%d/n",NUM(1,2,3));
printf("%s/n",STR("aa","bb","cc"));
}

最后程序的输出为:
123
aabbcc
千万别担心,除非需要或者宏的用法恰好和手头的工作相关,否则很少有程序员会知道##运算符。绝大多数程序员从来没用过它。

linux c 宏定义

标签:现在   程序员   一个   printf   paste   aabb   否则   预处理   print   

原文地址:https://www.cnblogs.com/listenerln/p/10223509.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!