什么网站都可以进入的浏览器,网站制作的动画怎么做的,沈阳鸿晟服装有限公司的案例,怎么查询自己的商标记一个宏定义写法
最近在看libevent源码#xff0c;看到一个有趣的宏写法。特此记录。方便日后巩固学习。
源码写法#xff1a;
#define HT_FIND(name, head, elm) name##_HT_FIND((head), (elm))首先来简单分析一下#xff1a; 定睛一看是一个宏#xff0c;##是连接符…记一个宏定义写法
最近在看libevent源码看到一个有趣的宏写法。特此记录。方便日后巩固学习。
源码写法
#define HT_FIND(name, head, elm) name##_HT_FIND((head), (elm))首先来简单分析一下 定睛一看是一个宏##是连接符 在vscode鼠标悬停该宏调用处就清晰明了了 // 源码
dent HT_FIND(event_debug_map, global_debug_map, find);// 鼠标悬停在宏上查看扩展扩展如下
#define HT_FIND(name,head,elm) name ## _HT_FIND((head), (elm))
扩展到:
event_debug_map_HT_FIND((global_debug_map), (find))接下来模仿该写法写个例子
#define FUNC(name, value1, value2) name##_INT((value1), (value2))int add_INT(int a, int b)
{cout add a b endl;return a b;
}int mul_INT(int a, int b)
{cout mul a * b endl;return a * b;
}int sub_INT(int a, int b)
{cout sub a - b endl;return a - b;
}int main()
{FUNC(add, 9, 2);FUNC(mul, 9, 2);FUNC(sub, 9, 2);return 0;
}输出结果
add 11
mul 18
sub 7我相信看完例子你就明白这种写法了。非常方便。仔细看看是不是这个宏的调用有点像线程定义的写法。比如说我们定义一个相加功能的线程
thread t1{add, 1, 6};