C++中的宏定义和const、enum、inline

博客指出能让编译器处理的就别交给预编译器,介绍了宏定义、枚举和内联的相关内容。宏定义属预编译器处理,存在提示错误不精准、无作用域概念、不可取地址等问题;枚举有作用域,只能赋值整数且不可取地址;还给出了内联示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

总体的描述就是: 可以给编译器处理的就不要交给预编译器

宏定义define属于预编译器处理的范围,const、enum、inline为编译器处理的范围

宏定义define:

1、在运用宏定义定义一个常量,一旦运用错误,则会提示所定义的常量错误,而不是宏定义本身错误

如#define PI  3.14a

double pi = PI

则编译时会提示3.14a错误,而不是PI错误

2、宏定义的作用域

宏定义没有作用域的概念,及时将其定义在类内,但是一样不受作用域的限制

3、不可以对define取地址

枚举enum

1、与宏定义define相比,有作用域

2、只能赋值为整数int,而宏定义可以为任何值

3、不可以对enum取地址

内联inline

#define max(a,b)   (a)>(b)?(a):(b)

template<typename T>

line T max(const T& a,const T&b)

{

     return a>b?a:b

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值