为了账号安全,请及时绑定邮箱和手机立即绑定

C++中 预定义宏是否应该由inline函数取代

C++中 预定义宏是否应该由inline函数取代

暮色呼如 2018-07-07 14:21:58
在<Effective C++>中,有一个条款是这样的:现代的C++程序设计原则不推荐适用宏定义常量或函数宏,应该尽量少的使用 #define ,如果可能,用 const 变量或 inline 函数代替。但在Debug程序的时候需要一些预定义宏,如__DATE__,__FILE__,__LINE__,__FUNCTION__等。请问面对这种情况,是否应该用inline来代替define呢。如果需要 下面这种情况应该如何替代呢。#define log_err(M, ...) fprintf(stderr, "[ERROR] (%s:%d: errno: %s) " M "\n", __FILE__, __LINE__,  clean_errno(), ##__VA_ARGS__)
查看完整描述

2 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

我认为使用define的最大价值在于是否可以将大段的重复性代码浓缩为define,后续使用可能用一个宏就解决大段的重复性代码。比如mfc中的消息映射,成功的将很多重复性的代码浓缩为一两个宏,虽然mfc本身很复杂,但是它的宏定义的使用堪称教科书。其他常用的使用场景比如定义不定长的函数,你给出的这个例子就是。比如与操作系统和编译环境有关的,比如__FILE__,__LINE__,DEBUG等。至于你讲的可能的代替,我认为是定义常量、定义简单的函数等。

查看完整回答
反对 回复 2018-07-13
?
倚天杖

TA贡献1828条经验 获得超3个赞

楼上的意思对的,对于可以替换的宏定义,比如定义的宏常量,或者宏函数,尽量用const 或者内联

查看完整回答
反对 回复 2018-07-13
  • 2 回答
  • 0 关注
  • 179 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号