利用宏扩展代码的可读性
来源:互联网 发布:mac国内网游 编辑:程序博客网 时间:2024/05/29 07:19
上周看了一下ffmpeg,在ffmpeg.c->main()->avcodec_register_all()中看到这样一些代码:
REGISTER_DECODER (AASC, aasc);
REGISTER_DECODER (AMV, amv);
REGISTER_ENCDEC (ASV1, asv1);
REGISTER_ENCDEC (ASV2, asv2);
REGISTER_DECODER (AVS, avs);
很显然是在注册各种codec的结构体,一是把各codec相关的信息挂载到全局链表中,二要通过宏定义来判断哪些codec需要注册,哪些不需要.
REGISTER_DECODER的宏是这样定义的:
#define REGISTER_DECODER(X,x) {
extern AVCodec x##_decoder;
if(CONFIG_##X##_DECODER) avcodec_register(&x##_decoder); }
对REGISTER_DECODER (AASC, aasc);来说,展开来就是这样:
extern AVCodec aasc_decoder;
if(CONFIG_AASC_DECODER)
avcodec_register(&aasc_decoder);
原理很简单,但是用的却很巧妙,主要是##这个宏用的人并不是很多,在这里倒是个很恰当的适用场景.
我觉得这种用法的好处有好几个:
- 简化代码,使主要逻辑一目了然,这时最大的优点.我们现在的项目里就有很多这样的函数,宏掺杂在代码中,怎么排版都觉得很乱,一眼看上去根本不知道这些代码的目的是什么.
- 减少coding工作量,这跟简化代码基本是一个意思,呵呵.
- 利用宏扩展代码的可读性
- 关于代码的可读性
- 代码可读性的提升
- 增强代码可读性的途径
- 编写可读性代码的艺术
- 如何提升代码的可读性
- 编写可读性代码的艺术
- 代码可读性
- 代码规范_1:代码的可读性
- 怎么写可读性强的代码
- 关于代码简洁性与可读性的悖论
- 用params关键字增强代码的可读性
- 提高代码可读性的注释技巧
- 影响项目代码可读性的反面教材
- 如何提高汇编代码的可读性
- 如何编写可读性好的代码
- 注意代码的规范和可读性
- 编写可读性代码的艺术(一)
- android 图文结合
- cf 219E parking lot 线段树
- 领悟设计模式
- [iOS] iOS 6的Rotation
- 手机号码和电话号码的正则表达式
- 利用宏扩展代码的可读性
- Stigmergy and Swarm intelligence
- IOS多线程编程之NSThread的使用
- 推荐17个优美新鲜的jQuery的工具提示插件
- android_alsa_audio
- 不公平的社会
- android lib库崩溃 反编译
- 22、JAVA 判断一个数是不是质数[中兴笔试]
- inux中的grep -v 的使用