我不理解这些宏,它是如何工作的?还有irc _ ## name是什么?..我从insobot IRC bot得到了这段代码,代码为https://github.com/baines/insobot/blob/master/src/insobot.c
#define IRC_CALLBACK_BASE(name, event_type) static void irc_##name ( \
irc_session_t* session, \
event_type event, \
const char* origin, \
const char** params, \
unsigned int count \
)
#define IRC_STR_CALLBACK(name) IRC_CALLBACK_BASE(name, const char*)
#define IRC_NUM_CALLBACK(name) IRC_CALLBACK_BASE(name, unsigned int)
答案 0 :(得分:1)
##
是令牌连接运算符:在这些宏定义中使用它,通过在宏{的第一个参数的值之前加irc_
来创建回调函数名称的标识符{1}}和/或IRC_STR_CALLBACK
在第183行查看此宏调用:
IRC_NUM_CALLBACK
此源代码行扩展为
IRC_STR_CALLBACK(on_join);
该宏用于以一致的方式声明处理程序,而无需显式地编写原型,这很方便,因为此源文件中有许多处理程序。