免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3576 | 回复: 3
打印 上一主题 下一主题

[C] 为什么有些代码里面提倡用宏定义来替代接口的作用? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-04-19 21:23 |只看该作者 |倒序浏览

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

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

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

论坛徽章:
0
2 [报告]
发表于 2014-04-20 13:52 |只看该作者
本帖最后由 zhouzhenghui 于 2014-04-20 13:55 编辑

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

比如在C中实现一些类似于stl的数据结构,而不受c本身类型检查系统的约束,还有比如我使用宏实现c语言流程控制,https://github.com/zhouzhenghui/c-sigslot

论坛徽章:
0
3 [报告]
发表于 2014-04-20 18:21 |只看该作者
boost,怎么还有boost?
这样可读性呢?

纯C的parallel 实现,给力

回复 2# zhouzhenghui


   

论坛徽章:
0
4 [报告]
发表于 2014-04-20 19:54 |只看该作者
可读性可能会受到一定的影响,但大多数情况接口差异可以做到很小,或者说接口保持清晰简洁也就够了。

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

比如我代码中使用的是boost preprocessor部分,这是c兼容的预处理库,其中把基于宏的元编程谓词都标准化了,一旦理解了,对程序员而言会非常容易掌握。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP