使用const 常量 代替 宏定义 需注意的问题

博客介绍了C++中宏定义和const定义常量的用法,指出用const替换宏定义可在编译时进行类型检查,方便调试。还探讨了多个文件使用常量的情况,包括const变量和非const变量在多文件共享时的处理方式,如使用extern关键字。

1.  #define   PI   3.1415 这是一个很常见的宏定义

    不过,在c++中,effective c++中曾指出过,尽量用const 定义常量,来替换宏定义。

    const double PI = 3.1415;

    好处: const 替换 宏定义后,编译时能进行类型检查,一旦出错后,比宏定义更方便调试。

2. 我们来思考一个问题,如果多个文件需要使用 常量PI,则在每个文件中都如下定义,const double PI = 3.1415;此时,你是否会想,存在变量冲定义的问题吗?

    其实,const定义的变量,只在定义所在文件有效,所以,多个文件同时定义 const double PI = 3.1415; 相当于不同的变量,不会造成变量重定义。

3. 我们再思考一个问题,如果有如下语句  const int  Num = fx();  其中fx()返回一个int,我们需要在多个文件共享变量Num,此时,需如何处理?

    其实很简单,只在一个文件中定义Num,如下 extern const int Num = fx(); 注意,此时extern关键字,必须要加,其余需要使用Num的文件中,只需声明即可, extern const int Num;

4. 最后,在思考一个问题,正常情况下非const变量,如果想在多个文件中共享,如何处理?

    与3的情况比,略微有些不一样,如果需在多个文件共享,则需要声明为extern,很简单,定义只在一个文件,int Cnt = 25; 其余需要使用该变量Cnt的文件中,声明为外部变量即可,如下  extern int Cnt;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值