gcc 4.7.2
c89
你好,
类函数宏只是文本替换,我知道有些程序员更喜欢内联函数。我想知道我所做的是否有什么问题。
需要注意几点,我没有使用 do...while(0) 或花括号来换行,因为我会得到 isdn_channel 的未声明错误。
#define ISDN_CHANNEL_GET(channel) \
module_isdn_channel_t *isdn_channel = NULL; \
isdn_channel = channel->base.imp->isdn_channels[channel->isdn_id]; \
if(!isdn_channel) { \
LOG(CRITICAL, "Failed to get channel data"); \
return FALSE; \
}
在我的源代码中,我像这样使用它,没有添加分号:
ISDN_CHANNEL_GET(channel)
isdn_channel->base.sync_answer |= SIP_CONNECTED;
一切正常,但我只是想检查一下,因为我刚刚开始编写这些类似函数的宏。
非常感谢您的任何建议,