当前位置: 首页 > news >正文

C++扫盲系列|宏定义

最近看了下b站的GAS教程,发现了里面有一些源码看不懂,然后想着去熟悉一下,就发现了其中有个概念叫做宏。所以今天我们就花一点是时间来解读一下这个宏
参考文档:
https://www.runoob.com/cplusplus/cpp-preprocessor.html
【55】C++的宏_哔哩哔哩_bilibili这个大神关于宏的讲解非常的清晰,是一个值得一看的教程。

其实就是预处理,预处理的过程就是编译的前一步,在编译之前需要先做这一件事。这个过程能其实就是复制一些定义了的文件然后到这里。预处理呢一般是由#开头的,比如常见的这个#include。

介绍几个常见的宏

define 预处理

这个指令呢一般用于创建符号常量,统称为宏,指令的一般形式是#define macro-name replacement-text

条件编译

有一些指令呢可以选择性的对部分源码进行编译。这个过程就是条件编译

#ifdef NULL #define NULL 0 #endif

也可以在调试的时候进行编译比如,

#ifdef DEBUG cerr << "Variable x=" << x << endl; #endif
  • **宏的定义与预处理器关系

    00:04

    **:宏是利用 C++ 预处理器实现的功能,预处理器在编译前进行文本编辑,处理以哈希开头的预处理器指令,宏本质是代码中的文本替换,区别于模板(模板在编译阶段评估,宏在预处理器阶段纯文本替换)。

  • **宏的基础使用示例

    03:52

    **:通过定义#define WAIT std::cin.get,在代码中用WAIT;替代std::cin.get();,预处理器会在编译前将WAIT替换为std::cin.get;还举例定义#define OPEN_CURLY {,用其替代代码中的左花括号,强调此类简单替换无实际意义,不建议用于混淆代码。

  • **带参数宏的使用

    07:53

    **:定义#define LOG(x) std::cout << x << std::endl,在代码中用LOG("Hello");实现打印功能,预处理器会将LOG("Hello")替换为std::cout << "Hello" << std::endl,并提及该方式可用于简化日志打印,在复杂日志系统中有用。

  • **宏在调试与发布模式下的应用

    09:21

    **:在项目属性的 C/C++ 预处理器中定义PR_DEBUG(调试模式),通过#if defined(PR_DEBUG)定义LOG(x)为打印语句,#else定义LOG(x)为空,实现调试模式保留日志代码、发布模式删除日志代码,避免泄露信息且提升性能。

  • **宏定义的细节与技巧

    14:19

    **:建议将宏定义为带值形式(如#define PR_DEBUG 1),便于控制启用 / 禁用;可使用反斜杠\实现多行宏定义,如将主函数相关代码拆分行用反斜杠连接定义为宏,需注意反斜杠后无空格,否则会错误转义空格。

  • **宏的其他实用场景与后续内容提示

    16:03

    **:宏可用于调试时插入内置预处理器符号(如__FILE__获取文件路径、__LINE__获取代码行号),还可替换new关键字跟踪内存分配(如记录分配字节数、文件及行号);后续视频将深入宏的高级示例与特定应用场景,还提及 OpenGL 系列视频中有宏的实际应用案例(如包装 OpenGL 函数调用自动查错)。

  • **使用宏的注意事项

    02:57

    **:不建议过度使用宏,因其会增加代码理解难度,编写代码应追求清晰易懂,而非刻意使用多种 C++ 特性炫耀;定义宏时需注意分号位置(如不在宏定义末尾加分号,在代码调用时加,避免语法错误),且宏命名建议加项目前缀(如PR_),避免与其他宏冲突。

这里打算写一个系列的教程来帮助自己解决没次都想做完完美的这样一个性格,点个关注吧,后续会努力更新一些高质量文章并带一些实际的案例 ,respect

http://www.jsqmd.com/news/335857/

相关文章:

  • 2026年靠谱的蓄热石墨烯纺织品/三合一石墨烯纺织品厂家用户好评推荐 - 行业平台推荐
  • <span class=“js_title_inner“>4--Gradle入门 - 创建普通的web工程</span>
  • 2026实力板式办公家具厂家推荐-板式老板桌直销厂家/板式办公班台定制厂家/板式办公文件柜厂家/板式会议桌定做厂家榜单 - 栗子测评
  • 2026年口碑好的填充物石墨烯纺织品用户口碑认可参考(高评价) - 行业平台推荐
  • 2026武汉光谷步行街实力眼镜店盘点:6家专业之选 - 2026年企业推荐榜
  • 2026年武汉K11商圈实力眼镜店品牌深度测评与选购指南 - 2026年企业推荐榜
  • 折叠式会议桌哪家好?2026年折叠会议桌品牌推荐,靠谱折叠会议桌厂家以及高品质会议桌厂家全汇总 - 栗子测评
  • 从Java全栈到Vue3:一场真实的技术面试实战
  • Vue 3路由 (Vue Router) : Hash 模式 和 Web History 模式
  • <span class=“js_title_inner“>先正达集团在中国加速布局全球级研发中心和制造工厂 | 美通社头条</span>
  • 2026年比较好的黑点清机料/PET热流道清机料厂家热卖产品推荐(近期) - 行业平台推荐
  • Multi-Agent-System多智能体系统
  • 钢套钢保温钢管厂家哪家好?2026年国内优质螺旋钢管生产厂家实力榜单大盘点 - 栗子测评
  • 2026年置业西安,如何甄选专业的楼盘销售服务? - 2026年企业推荐榜
  • 智能温控仪哪家好?2026工业加热设备风向标:定制厂家一览 - 栗子测评
  • 2026年知名的幕墙石英砖好评厂家曝光 - 行业平台推荐
  • 2026年质量好的陶瓷幕墙砖厂家怎么选 - 行业平台推荐
  • 南京心理咨询哪家靠谱?2026年口碑好的南京心理咨询权威盘点,精选南京好的心理咨询机构,南京好的青少年心理咨询优质推荐 - 栗子测评
  • 老板桌直销批发哪家好?原木风办公家具采购推荐!2026年原木风老板桌定制厂家/实木老板桌生产厂家精选盘点 - 栗子测评
  • 直缝电阻焊钢管厂家哪家好?2026年口碑好的直缝埋弧焊钢管厂家全名单汇总 - 栗子测评
  • 2026微波解冻设备厂商甄选:冻品微波解冻缓化设备厂家+肉制品射频解冻设备厂家汇总 - 栗子测评
  • 南京心理咨询哪家好?南京青少年心理咨询哪家好?2026年江苏心理咨询机构推荐,南京心理咨询推荐精选榜单 - 栗子测评
  • SpringBoot+Vue 社区养老服务系统管理平台源码【适合毕设/课设/学习】Java+MySQL
  • 2026微波加热熟化设备厂家精选:微波解冻设备厂商+冻品微波解冻缓化设备厂家+微波杀菌设备厂家一览 - 栗子测评
  • <span class=“js_title_inner“>天数智芯公布芯片四代架构路线图,发布边端算力产品“彤央”系列</span>
  • 春节流量洪峰将至,你的AI应用“扛得住”吗?
  • 本地 vs 云端部署:成本、隐私、延迟、运维复杂度怎么选?
  • 基于SpringBoot+Vue的毕业论文管理系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】
  • 蚌埠报废车回收服务权威评测:2026年精选三家实力厂商 - 2026年企业推荐榜
  • 2026年全国tpep防腐钢管厂家口碑榜!3pe防腐钢管厂家优选名单及采购指南 - 栗子测评