您的位置:首页 > 编程语言 > C语言/C++

C++程序设计--宏定义在代码中的实际作用

2017-08-29 18:46 706 查看
引用一段IjkPlayer的代码作示例:

#define IJK_REGISTER_PROTOCOL(x)                                        \
{                                                                   \
extern URLProtocol ijkimp_ff_##x##_protocol;                        \
int ijkav_register_##x##_protocol(URLProtocol *protocol, int protocol_size);\
ijkav_register_##x##_protocol(&ijkimp_ff_##x##_protocol, sizeof(URLProtocol));  \
}


在上面代码中,IJK_REGISTER_PROTOCOL为宏名称,x为变量,##为连接符,用于连接前后字符串。

当我们有很多个名称类似的函数,比如

ijkimp_ff_async_protocol
,

ijkimp_ff_ijklongurl_protocol
,

ijkimp_ff_ijktcphook_protocol
,

ijkimp_ff_ijkhttphook_protocol
,

这几个函数,只有中间部分是不同的,所以我们可以借助宏定义的方式来定义一个公共的名称,避免为
async
,
ijklongurl
,
ijktcphook
,
ijkhttphook
相关函数都实现一个上层方法。使代码更加简洁和利于理解。

于是,我们的调用就变成了这样:

IJK_REGISTER_PROTOCOL(async);
IJK_REGISTER_PROTOCOL(ijklongurl);
IJK_REGISTER_PROTOCOL(ijktcphook);
IJK_REGISTER_PROTOCOL(ijkhttphook);
IJK_REGISTER_PROTOCOL(ijksegment);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: