Chinaunix

标题: 为什么有些代码里面提倡用宏定义来替代接口的作用? [打印本页]

作者: 我爱CUnix    时间: 2014-04-19 21:23
标题: 为什么有些代码里面提倡用宏定义来替代接口的作用?

http://troydhanson.github.io/uthash/index.html

https://github.com/troydhanson/uthash/tree/master/src

看这里,全是宏定义,我很想知道各位对这个的看法...

作者: zhouzhenghui    时间: 2014-04-20 13:52
本帖最后由 zhouzhenghui 于 2014-04-20 13:55 编辑

不要拘泥于所谓的狭义的接口概念,接口本身跟类型是没有关系的,宏因为层次高,所以不受语言自身的约束,可能实现一些更加灵活的功能。

比如在C中实现一些类似于stl的数据结构,而不受c本身类型检查系统的约束,还有比如我使用宏实现c语言流程控制,https://github.com/zhouzhenghui/c-sigslot
作者: 我爱CUnix    时间: 2014-04-20 18:21
boost,怎么还有boost?
这样可读性呢?

纯C的parallel 实现,给力

回复 2# zhouzhenghui


   
作者: zhouzhenghui    时间: 2014-04-20 19:54
可读性可能会受到一定的影响,但大多数情况接口差异可以做到很小,或者说接口保持清晰简洁也就够了。

其实,从实现角度来说,可读性跟表达语言有一定关系,但往往更多是和要表述问题本身以及阅读人有关,即便标准的c/c++代码,在不懂的人看来也无异一堆乱码,更别说模板实现之类看起来也是非常混乱的。而一旦把一些经常使用的模式固定下来,并被使用者和阅读者所熟悉,手段自身的复杂性的影响往往反而是次要的。

比如我代码中使用的是boost preprocessor部分,这是c兼容的预处理库,其中把基于宏的元编程谓词都标准化了,一旦理解了,对程序员而言会非常容易掌握。





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2