news 2026/3/10 7:56:04

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/2/14 15:52:42

教你如何在JMeter中调用Python代码N种方法

在性能测试领域,JMeter已经成为测试专业人士的首选工具,用于模拟用户行为、测量响应时间、评估系统性能。而现在大部分接口都会涉及到验签、签名、加密等操作,为了满足特定需求,我们需要更多的灵活性,比如引入Python来…

作者头像 李华
网站建设 2026/3/3 2:58:20

Open-AutoGLM部署难题全解析,一文解决99%常见错误

第一章:Open-AutoGLM开源实操指南环境准备与项目克隆 在开始使用 Open-AutoGLM 前,需确保本地已安装 Python 3.9 和 Git。推荐使用虚拟环境以隔离依赖。创建虚拟环境:python -m venv open-autoglm-env激活环境(Linux/macOS&#x…

作者头像 李华
网站建设 2026/3/2 17:30:06

2025最新!专科生必备9个AI论文平台测评与推荐

2025最新!专科生必备9个AI论文平台测评与推荐 2025年专科生论文写作工具测评:为何需要一份精准指南? 随着人工智能技术的快速发展,AI论文平台逐渐成为高校学生,尤其是专科生群体的重要辅助工具。然而,面对市…

作者头像 李华
网站建设 2026/3/6 21:54:11

Open-AutoGLM部署实战(千卡级优化秘籍)

第一章:Open-AutoGLM部署实战(千卡级优化秘籍)在超大规模模型训练场景中,Open-AutoGLM 的千卡级集群部署对性能调优提出了极高要求。合理的资源配置与通信优化策略是实现线性加速比的关键。分布式训练架构设计 采用混合并行策略&a…

作者头像 李华
网站建设 2026/3/9 8:17:12

【AI自动化工具下载指南】:智普Open-AutoGLM获取路径全解析

第一章:智普Open-AutoGLM如何下载 访问官方仓库 智普AI推出的Open-AutoGLM是一个开源的自动化代码生成工具,其源码托管在GitHub平台。用户需首先访问项目主页以获取最新版本的下载链接。 打开浏览器,访问 https://github.com/zhipuai/Open-…

作者头像 李华
网站建设 2026/3/9 5:37:24

模型部署效率提升300%?Open-AutoGLM轻量化配置秘籍曝光

第一章:模型部署效率提升300%?Open-AutoGLM轻量化之谜在大模型时代,推理延迟与资源消耗成为制约AI落地的关键瓶颈。Open-AutoGLM作为开源社区新兴的轻量化自动推理框架,凭借其独特的模型压缩策略与运行时优化机制,宣称…

作者头像 李华