[C++再学习系列] 避免使用宏

本文探讨了C++中宏使用的潜在问题及其替代方案。通过具体的例子说明宏如何在预处理阶段被解析,可能导致代码错误。文章进一步介绍了const、inline、namespace和template等特性,这些可以作为宏的有效替代方案。
摘要由CSDN通过智能技术生成

避免使用宏

宏是一种文本替换设施 ,宏替换发生在编译器的预处理阶段,此时 C++ 的语法和语义规则并未去作用,无法对宏的进行任何检查,这将为后续生成代码的编译埋下隐患。此外。宏语法仅能理解小括号和方括号 ,并不识别 template 的方括号 <> 。举例:

 

MACRO( Foo<int, double> )

虽然 Foo<int, double> 是一个 C++ 实体,但是上面的宏将解读为传入 Foo<int double> 两个参数。

 

C++ 中用于取代宏的语法:

常数 ---- 使用 const enum

函数展开 ---inline 内联函数

名称冲突 ----namespace

通用函数 ----template

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值