C++学习之#define的替换

本文探讨了在C++编程中如何使用const、enum和inline来替代#define,以减少预处理指令的使用。尽管#define在某些场景下仍是必要的,但const提供了编译时的常量,enum适用于类内常量,而inline则能优化函数调用。文章详细阐述了这三种方式在不同情况下的应用,包括常量指针、类专属常量以及形似函数的宏替换。
摘要由CSDN通过智能技术生成

需要强调的是,我们采用如此的替换对预处理的需求降低了,但是并没有完全消除,#define仍然是必需品,#ifdef和#ifndef仍然在控制编译上扮演着重要的作用。 

#define ASPECT_RADIO 1.512

上面语句运用了宏定义,在代码中ASPECT_RADIO的值就是1.512,但是需要注意的是:宏定义语句的处理是预处理器进行操作的,也就是说在编译器对代码进行编译的时候,所有的ASPECT_RADIO就已经被替换成1.512了,如果程序中出现错误的时候,打印的信息是不会包含ASPECT_RADIO的,这无疑对错误的定位造成了困难。

一般我们会用constenuminline关键字来替代 #define,下面就说一下具体的替代情况。(这里不是说#define就完全没用了,只是在下面的情况下使用其他关键字替代更好,#define自有其其他的用处)

用const替代

const语句是实实在在的编译器处理的,不像#define是在预处理中进行替换,例如上面的代码可以替换成

const double ASPECT_RADIO = 1.512;

对于一般的情况直接这样替换就行,但是有两种情况需要注意一下:

1. 常量指针

当const与指针进行结合时,情况有些复杂,当我们在头文

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值