【C++基础】#define vs constexpr:C++ 编译期常量的双雄对决(面试高频考点 + 真题解析)

​在 C++ 面试中,#define与constexpr的对比堪称 “元老级” 考点 —— 据统计,在 2023-2024 年的 C++ 工程师面试中,该知识点的出现频率高达 72%,尤其是在字节跳动、腾讯、华为等企业的校招 / 社招中,几乎是必问内容。​


这两个语法元素都与 “编译期常量” 相关,但背后却代表着 C++ 发展的两个时代:#define是 C 语言遗留的 “文本替换工具”,而constexpr是 C++11 引入的 “编译期计算神器”。理解它们的区别与联系,不仅能应对面试,更能体现你对 C++ 语言进化的深刻理解。​

本文将从基础语法到底层实现,结合历年真题,彻底搞懂这对 “冤家” 的前世今生,轻松应对从初级到资深工程师的面试挑战。​

一、基础概念:两个 “常量工具” 的本质区别​

1.1 #define:C 语言时代的 “文本替换机”​

#define是预处理指令,作用是在编译前的预处理阶段进行纯文本替换,不涉及类型检查,也不理解 C++ 语法。

// 基本用法:定义宏常量
#define MAX_SIZE 1024
#define PI 3.1415926

// 带参数的宏(类似函数)
#define SQUARE(x) (x) * (x)
#define MIN(a, b) ((a) < (b) ? (a) : (b))

工作流程:预处理阶

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

byte轻骑兵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值