news 2026/10/3 10:08:46

C语言的宏定义与C++的inline

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言的宏定义与C++的inline

首先明确的时,在程序的预处理时,C语言的宏定义是直接在程序中展开,而C++的inline及既可能展开,也可能不展开(取决于你的编译设置,inline内的代码数量)

先来说明C中的宏定义:

1.定义常量

#define MAX 100 —— 这就像是把 MAX 这个名称 直接当作 100 来处理

比如: int (*arr[MAX])(int,int) 这个在预处理阶段就会变成 int(*arr[100])(int,int)

值得一提的是,这个并不是只能用于替换数字,而是所有都可以进行替换,

比如 #define YOU xiaoming 在后面的阶段中YOU 都会变成 xiaoming

2.带参数的宏定义

#definename( parament-list ) stuf

值得注意的是(parament-list)应该于与name紧靠在一起,否则会被认为是stuff中的部分

e.g #define ADD(x,y) ((x)+(y)) ——这就是代表后面只要输入了ADD(x,y)就会认为是将x,y 进行相加

比如 printf("%d",ADD(3,4));——就会编译出 7

以上就是宏定义了,接下来讲一下这其中容易出现的小错误

1. #define MAX 1000;

这里的问题是这里会把 ' ; '也直接弄过去,容易出错,比如printf("%d",MAX); 在于处理时就会变成 printf("%d",1000;); 出现error

2.#define ADD(x,y) x+y

这里的问题是 ADD(3==4,5*5) —— 3 == 4+5*5 ->0,可是我想要的结果应该是 25

3.#define ADD(x,y) (x+y)

这里的问题和上面相似,

所以在写带参数的宏定义时 #define ADD(x,y) ((x)+(y)) ,参数和结果都要带();

C++中的inline

结构

inline int ADD(int x,int y )

{

return x+y;

}

调用时,和函数相似,直接调用 ADD (x,y);

e.g

int ret = ADD(3,9);

return ret;

这样设计的初衷是防止在宏定义中的出错点,毕竟要是函数能写错,也是白学了!!

相比于宏定义的无条件展开,这里inline是有一定思想的,当你的代码量超过了一定行数,就不会在预处理阶段展开,(一般在5-10)毕竟要是很长你还展开的话就有点笨了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 7:40:52

网络安全哪个就业方向好?

随着网络安全需求激增,行业岗位逐渐细分,不再是单一的 “安全防护”。从日常监测网络异常,到挖掘系统漏洞、应对突发攻击,不同工作对应不同岗位。那么网络安全具体岗位有哪些?以下是具体内容介绍。网络安全领域涵盖许多不同的岗位…

作者头像 李华
网站建设 2026/10/3 1:27:34

浅谈专项测试之弱网络测试

一.弱网络测试背景 移动端产品的使用并非完全都是在流畅的wifi环境,大部分用户主要使用4G,3G,2G等网络,另外因为移动端产品使用的场景多变,如进公交,上地铁,坐电梯,使得弱网测试显得尤为重要。…

作者头像 李华
网站建设 2026/10/1 22:48:28

观察者模式:从理论到生产实践

观察者模式深度解析:从理论到生产实践,Spring都在用的设计模式 观察者模式UML类图 在软件开发中,我们经常需要实现”一个对象状态变化,多个对象自动更新”的场景。比如用户注册成功时,需要发送欢迎邮件、赠送积分、记录…

作者头像 李华
网站建设 2026/10/2 0:49:10

格栅除污机数据采集远程运维系统方案

格栅除污机作为污水处理、水利工程、市政排水等领域的关键预处理设备,其清污效率、运行稳定性及运维及时性直接影响后续处理工艺的顺畅性、水体净化效果与系统运行能耗,是保障水处理设施长效运转、防范管网堵塞风险的核心基础设施。对设备制造商来说&…

作者头像 李华
网站建设 2026/9/27 13:53:39

Microsoft Dataverse 远程代码执行高危漏洞 (CVE-2024-35260) 安全公告

安全公告:Microsoft Dataverse 远程代码执行漏洞 (CVE-2024-35260) 概述 在 Microsoft Dataverse 中发现了一个严重的远程代码执行漏洞,被分配为 CVE-2024-35260。该漏洞被归类为 CWE-426(不可信搜索路径),允许具有高权…

作者头像 李华