define定义的函数如何引用_c++ 尽量避免使用#define?对,是尽量!

先说结论:

此处引用竞天问的回答

define变量和作为编译开关是两种不同的用法,书上说的替代只是前者
  • 不要相信网上鼓吹使用const能完全取代的#define的文章!
  • 目前以c++目前的状况,不可能以任何方式完全取代#define的作用!
  • 尽量避免使用#define,是在const等函数体能取代#define的作用下!

1.先看个简单的、不能替代的例子(编译开关)

a.h

#define Z 1

b.h

#include 

此例子,const等函数根本无法取代#define。


2. 能取代的例子(变量)

引用自

(C++)举例说明可以使用const代替#define以消除#define的不安全性_爱上小公举-CSDN博客​blog.csdn.net
664d35ad3911680040914b7b4cd43801.png
int 

此处就会引起歧义,我们会认为输出为T2= 0

但实际上输出为T2= 2

其原因是C++把cout << "T2= " << T2 << endl ; 解释成了cout<<"T2= " << a+a-a+a << endl ;

但如果换成const就不会引起此错误, 例如 :

int 

输出就为t2= 0

当作为变量时,尽量使用const等函数使cpp文件中代码逻辑更清晰。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值