簡體   English   中英

了解C和預處理程序指令中的宏

[英]understanding Macros in C and preprocessor directives

我不明白那些宏,它是如何工作的?還有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)

##是令牌串聯運算符:在這些宏定義中使用它,通過在宏IRC_STR_CALLBACK和/或IRC_NUM_CALLBACK的第一個參數的值之前添加irc_來創建回調函數名稱的標識符

查看第183行的宏調用:

IRC_STR_CALLBACK(on_join);

該源代碼行擴展為

static void irc_on_join ( irc_session_t* session, event_type     event,   const char*    origin,  const char**   params,  unsigned int   count    );

該宏用於以一致的方式聲明處理程序,而無需顯式地編寫原型,這很方便,因為此源文件中有許多處理程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM