C++中的宏定义与内联函数
文章目录宏定义与内联函数1 普通函数2 内联函数inline3 宏定义#define4 宏定义与内联函数的区别宏定义与内联函数1 普通函数任何一次函数调用程序都得进行保存和恢复状态信息的动作用数据结构的术语说就是进栈和退栈还有内存分配的过程。2 内联函数inline函数只要声明为内联就会建议编译器不把它编译成一次函数调用而在每处调用内联函数的地方直接把内联函数的内容展开这样可以省去函数的调用的开销提高效率。内联标记inline要跟类的声明写在一起写在声明类的.h文件中而不是写在实现类的.cpp文件中。一般在类的声明中直接写函数体就会被自动识别为内联函数。内联函数一般用于函数体的代码比较简单的函数如果内联函数过于复杂编译器会自动的把这个内联函数转换成普通函数。不能包含复杂的控制语句例如while、switch语句且不能递归调用内联函数只是一种编译机制仅仅是建议编译器进行内联而编译器是否内联不一定有的编译器甚至不允许内联。inline函数允许每个翻译单元 (.cpp) 都拥有一份完全相同的定义链接器会把多份实例合并成唯一一份实体不会报多重定义错误。所有地方的定义必须完全一模一样。如果不同 cpp 里 inline 函数定义不一样属于 UB 未定义行为。内联函数本质上还是真正的函数依然会在编译期进行完整类型、语法的安全检查。3 宏定义#define宏定义是在预编译的时候把所有的宏名用宏体来替换简单的说就是字符串替换。宏定义不是函数预处理器用复制宏代码的方式代替函数的调用也省去了函数压栈退栈过程。宏定义是纯粹的字符串替换不经过编译器语法解析不会在编译期进行类型、语法的安全检查。4 宏定义与内联函数的区别相同宏定义和内联函数使用的时候都是进行代码展开都能在性能上进行一定程度的优化。区别安全检查宏定义是没有类型、语法等安全检查的在预编译阶段就进行替换无论对还是错都是直接替换内联函数会在编译时进行安全检查在编译阶段才在调用处展开。函数桟帧宏定义没有函数栈帧无法断点进入宏调试困难内联函数是依然保留函数栈帧有调试信息可以调试。展开的时机宏定义是在预编译阶段的时候把所有的宏名替换内联函数则是在编译阶段把所有调用内联函数的地方把联函数插入。

相关新闻

中山GEO分享会||抢占AI推荐位,就是抢占未来3年的客户入口

中山GEO分享会||抢占AI推荐位,就是抢占未来3年的客户入口

抢占AI推荐位,就是抢占未来3年的客户入口外贸圈集团GEO系列分享会 中山站回顾 | 2026年8月21日2026年8月21日,周五,中山。外贸圈集团GEO系列分享会中山站在中山市博雅电器有限公司举行。这是一场面向外贸企业决策者的内部分享会&…

2026/8/26 17:38:05 阅读更多 →
企业研发团队如何分配 Codex 账号:Plus、Pro、Business / Enterprise 与 API 的技术边界

企业研发团队如何分配 Codex 账号:Plus、Pro、Business / Enterprise 与 API 的技术边界

很多团队第一次引入 Codex 时,会直接问“买多少个 Pro”。这个问题其实问早了。企业需要先确定账号拓扑、真实使用者、任务强度、管理要求和程序化调用边界,否则很容易出现三种浪费:轻量岗位买了过高用量,重度岗位仍反复中断&…

2026/8/26 18:50:47 阅读更多 →
PaddleOCR从入门到进阶:OCR技术学习路线与核心算法解析

PaddleOCR从入门到进阶:OCR技术学习路线与核心算法解析

前言最近系统性地学习了 OCR(光学字符识别)技术体系,从 PaddleOCR 工具入手,逐步深入到核心算法原理。本文将学习过程中的思考和收获整理成笔记,涵盖 OCR 任务概述、研究生学习深度建议、PaddleOCR 快速上手、核心算法…

2026/8/26 16:12:26 阅读更多 →

最新新闻

【多篇论文阅读】Interactive World Models

【多篇论文阅读】Interactive World Models

Vid2World: Crafting Video Diffusion Models to Interactive World Models 类型判断:改造原理/配方(不是从零新架构)。本质是:给已有双向 video Diffusion 补两样能力——只能看过去、能跟帧级 action 走。 题目: Vid2World: Cra…

2026/8/26 20:03:45 阅读更多 →
Iris Shaders 完整新手指南:从零部署现代着色器 Mod 到帧率调优

Iris Shaders 完整新手指南:从零部署现代着色器 Mod 到帧率调优

Iris Shaders 完整新手指南:从零部署现代着色器 Mod 到帧率调优 【免费下载链接】Iris A modern shaders mod for Minecraft compatible with existing OptiFine shader packs 项目地址: https://gitcode.com/gh_mirrors/iri/Iris Iris Shaders 是一款为 Min…

2026/8/26 20:03:45 阅读更多 →
AgentScope Java 2.0 技能仓库(Skill Repository)完全实战指南

AgentScope Java 2.0 技能仓库(Skill Repository)完全实战指南

一、背景与设计理念 在构建企业级 AI Agent 应用时,智能体能力的可复用性、版本化管理与动态分发是工程化落地的核心瓶颈。传统做法往往将 Prompt、工具定义硬编码在业务代码中,导致: 技能无法跨项目复用修改一个 Prompt 需要重新编译部署多人…

2026/8/26 20:03:45 阅读更多 →
1.3 C++踩坑排雷手册——严格别名规则:不同类型指针不重叠,编译器据此优化

1.3 C++踩坑排雷手册——严格别名规则:不同类型指针不重叠,编译器据此优化

1.3 C实战100例——严格别名规则:不同类型指针不重叠,编译器据此优化 受众 初级/中级工程师,能敲命令、会看报错信息即可。默认具备基础Linux操作能力。 场景锚定 场景:你的 C 程序在 -O2 优化级别下运行结果与 -O0 不一致&#x…

2026/8/26 20:03:45 阅读更多 →
Spring MVC 中 Filter、Interceptor 与 ResponseBodyAdvice 的区别及选型

Spring MVC 中 Filter、Interceptor 与 ResponseBodyAdvice 的区别及选型

在 Spring MVC 项目里,经常会遇到三类需求:从请求头中读取语言、Token、租户等信息;在 Controller 执行前后做鉴权、日志、耗时统计;在响应返回客户端前,统一修改返回数据,例如国际化、脱敏、加密。这三类需…

2026/8/26 20:03:45 阅读更多 →
前端/后端/Android/iOS 方向怎么选?The Ultimate Internship Guide 四大方向技能地图

前端/后端/Android/iOS 方向怎么选?The Ultimate Internship Guide 四大方向技能地图

前端/后端/Android/iOS 方向怎么选?The Ultimate Internship Guide 四大方向技能地图 【免费下载链接】TheUltimateInternshipGuide Best guide for internship. 项目地址: https://gitcode.com/gh_mirrors/th/TheUltimateInternshipGuide 还在纠结实习方向&…

2026/8/26 20:02:44 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/26 17:46:43 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/26 17:46:39 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →