C++程序设计--宏定义在代码中的实际作用
2017-08-29 18:46
706 查看
引用一段IjkPlayer的代码作示例:
在上面代码中,IJK_REGISTER_PROTOCOL为宏名称,x为变量,##为连接符,用于连接前后字符串。
当我们有很多个名称类似的函数,比如
这几个函数,只有中间部分是不同的,所以我们可以借助宏定义的方式来定义一个公共的名称,避免为
于是,我们的调用就变成了这样:
#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);
相关文章推荐
- [C++] 编程实践之1: Google的C++代码风格2:作用域
- UE4的C++代码中的class关键字起什么作用?
- 嵌入式实时程序设计中C/C++代码的优化
- [置顶] 海量数据处理程序设计技巧(附C++代码)
- 海量数据处理程序设计技巧(附C++代码)
- C++代码中extern "C"作用
- C++ #ifndef和#ifdef宏定义的使用及作用介绍
- 十八、C++程序设计必知:作用域和可见性
- 嵌入式实时程序设计中C/C++代码的优化
- C++程序设计必知:作用域和可见性
- 入式实时程序设计中C/C++代码的优化
- C++完美工业曲线控件源程序 展示 Pegrpapi.h源代码 各种宏定义
- 鸡啄米:C++编程入门系列之十八(C++程序设计必知:作用域和可见性)
- 一个简单关于学生成绩管理的C++程序代码,但是对于拷贝析构函数目前还是不知其作用何在
- 【c++】面向对象程序设计之继承中的类作用域
- C++程序设计--宏定义使用--返回值
- 嵌入式实时程序设计中C/C++代码的优化
- 巧用宏定义来简写C,C++代码
- 嵌入式实时程序设计中C/C++代码的优化
- 【转载】巧用宏定义来简写C,C++代码