C++:为什么C++里建议用const/枚举/内联去替代宏?

什么是宏?

计算机科学里的宏(Macro),是一种批量批处理的称谓。一般说来,宏是一种规则或模式,或称语法替换 ,用于说明某一特定输入(通常是字符串)如何根据预定义的规则转换成对应的输出(通常也是字符串)。这种替换在预编译时进行,称作宏展开。

什么是const?

CONST是一个C、C++语言的关键字,它限定一个变量不允许被改变。使用CONST在一定程度上可以提高程序的安全性和可靠性,另外,在观看别人代码的时候,清晰理解CONST所起的作用,对理解对方的程序也有一些帮助。

什么是枚举?

值类型枚举 (enumeration),是值类型的一种特殊形式,它从 System.Enum 继承,并为基础基元类型的值提供备用名称。枚举类型有名称、基础类型和一组字段。基础类型必须是一个内置的有符号(或无符号)整数类型(如 Byte、Int32 或 UInt64)。字段是静态文本字段,其中的每一个字段都表示常数。所使用的语言给每个字段都分配一个基础类型的特定值。

什么是内联?

以inline修饰的函数叫做内联函数,编译时C++编译器会调用内联函数的地方展开,没有
函数压栈的开销,内联函数提升程序运行的效率。

1.inline是一种以空间换时间的做法,省去调用函数额开销。所以代码很长或者有循环/递归的的函数不适宜使用内联。
2.inline对于编译器而言只是一个建议,编译器会自动优化,如果定义为inline的函数体内有循环/递归等等,编译器优化时会忽略掉内联。
3.inline函数必须声明与定义放在一起,才能成为内联函数,仅将inline放在声明前是不起不作用的。
4.定义在类内的成员函数默认定义为内联函数。类内定义,一边都是默认inline函数

宏的优缺点:

宏的优点:

1.增强代码的复用性。
2.提高性能。

宏的缺点:

1.不方便调试宏。(因为预编译阶段进行了替换)
2.导致代码可读性差,可维护性差,容易误用。
3.没有类型安全的检查。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值