宏、宏定义
文章目录一、定义二、宏的使用1.是或否2.二选一(1)区分操作系统的宏命令2.防止头文件重复包含的宏命令 (对于.h文件)三、必须使用宏的场景场景一条件编译跨平台 操作系统 / 开关场景二日志记录获取文件名、行号、函数名场景三Qt 框架的特殊情况对你很重要一、定义1.在文件开头定义宏#define宏名 宏值举例#definePI3.14159#defineMAX_SIZE100#defineENABLE_DEBUG// 常用于条件编译配合 #ifdef2.在某头文件里定义宏然后在文件头部#include 定义宏的头文件.h例如在version.h里写上#defineUOS_CMBC1//0:标准版本 1:民生银行UOS版本然后在其他.h或.cpp文件头部写上#includeversion.h二、宏的使用1.是或否#if宏//或者#if !宏内容#endif举例#includeiostream// 这行就像“打开开关”。如果把这行注释掉开关就关了。#defineENABLE_DEBUGintmain(){inta10;#ifdefENABLE_DEBUG// 如果上面定义了 ENABLE_DEBUG这段代码就会被保留并编译std::cout调试信息变量 a 的值是 astd::endl;#endifstd::cout程序继续运行...std::endl;return0;}2.二选一#ifdef宏//注意二选一不能出现 #ifdef !宏内容1#else内容2#endif举例需要跨平台的代码需要区分Windows和Linux操作系统区分操作系统的宏不需要自己定义系统可直接识别(1)区分操作系统的宏命令Windows的宏是WIN32注意三个字母都要大写否则无法识别。#ifdefWIN32Windows代码#elseUnix/Linux代码#endif2.防止头文件重复包含的宏命令 (对于.h文件)以LogWidget.h为例方法13行搞定是通用的宏#ifdefLogWidget_H#defineLogWidget_H内容#endif方法2 1行搞定但不通用仅限某些#pragmaonce内容三、必须使用宏的场景坚决不推荐使用尤其是宏函数但在极少数特定场景下它们依然是“不可替代”的。尽管不推荐但在以下 3 种场景宏依然是唯一解C 标准至今没有提供更好的替代品场景一条件编译跨平台 操作系统 / 开关这是你刚刚提到的 #define ENABLE_DEBUG 和 #ifdef _WIN32强烈推荐使用。这是预处理器独有的能力可以在编译前就剔除不兼容平台的代码这是普通函数做不到的。场景二日志记录获取文件名、行号、函数名如果你想打印“当前在哪个文件的哪一行出了错”必须用宏因为FILE、LINE、func这些魔法宏是由预处理器在编译时填入的。// 这种多行宏业界仍在大量使用如 spdlog、Qt 的 qDebug#defineLOG_ERROR(msg)\do{\std::cerr[__FILE__:__LINE__] msgstd::endl;\}while(0)场景三Qt 框架的特殊情况对你很重要Qt 本身大量使用了宏而且你必须配合它signals / slots / emit这些都是 Qt 定义的宏MOC元对象编译器需要它们来生成反射代码。你不能不用。Q_OBJECT这也是宏用于开启信号槽和属性系统。区别在于Qt 的宏大多用于类声明代码生成而不是用于数值计算。所以在 Qt 项目中只要遵循官方规则即可切勿自己发明复杂的计算宏。

相关新闻

显示器黑屏自救指南:高分辨率设置错误的通用解决方案

显示器黑屏自救指南:高分辨率设置错误的通用解决方案

1. 问题场景:一次手贱操作引发的“灾难” 相信很多朋友,尤其是喜欢折腾电脑硬件、系统设置或者玩游戏的,都遇到过这个让人瞬间血压飙升的场景:你在系统显示设置里,或者某个游戏、软件的图形选项里,手一滑&a…

2026/10/18 3:11:17 阅读更多 →
2026年UV能量计TOP5厂家评测:鑫衡森仪器凭自研+代理双驱动登顶

2026年UV能量计TOP5厂家评测:鑫衡森仪器凭自研+代理双驱动登顶

开篇引言:从一次产线停摆看检测设备的选型之困2025年末,华南某知名消费电子代工厂的品控部门经历了一次严峻考验。一条价值千万的新手机生产线因屏幕涂层附着力不达标而被迫停摆,初步排查指向了用于来料检验的丝网张力计数据失准。更换了数台…

2026/10/18 3:12:09 阅读更多 →
PatreonDownloader终极指南:如何批量下载Patreon创作者内容

PatreonDownloader终极指南:如何批量下载Patreon创作者内容

PatreonDownloader终极指南:如何批量下载Patreon创作者内容 【免费下载链接】PatreonDownloader Powerful tool for downloading content posted by creators on patreon.com. Supports content hosted on patreon itself as well as external sites (additional pl…

2026/10/18 3:12:15 阅读更多 →

最新新闻

计算机网络面试高频考点:三次握手、DNS解析与HTTP缓存全梳理

计算机网络面试高频考点:三次握手、DNS解析与HTTP缓存全梳理

简介:面向技术面试准备的计算机基础知识点 PDF 文档,重点覆盖计算机网络中的高频考点,与“代码随想录知识星球”最强八股文系列的计算机基础篇对应,适合后端、前端开发者跳槽或校招前集中复习。内容系统梳理了TCP三次握手与四次挥…

2026/10/18 9:41:33 阅读更多 →
计算机网络面试高频考点:三次握手、TCP连接、HTTP缓存与DNS解析

计算机网络面试高频考点:三次握手、TCP连接、HTTP缓存与DNS解析

简介:这是一份面向后端、前端岗位求职者的计算机基础面试资料,内容源自代码随想录知识星球最强八股文系列的计算机基础篇。资源以单个PDF文件呈现,大小约37.83MB,排版紧凑、便于离线阅读或打印对照。PDF围绕计算机网络高频考点展开…

2026/10/18 9:41:33 阅读更多 →
期权Alpha从哪里来?量化捕捉与风控框架全解析

期权Alpha从哪里来?量化捕捉与风控框架全解析

Option Alphas 系列写到第四章,终于到了收尾总结。前三章分别拆了期权定价、波动率曲面、单腿与价差策略的底层逻辑,这一章我想换个角度:把所有零散的认知收拢到一条主线上——期权交易里的 Alpha 到底是什么、从哪里来、怎么稳定地把 Ta 装进…

2026/10/18 9:41:33 阅读更多 →
显存带宽与KV Cache:为什么8GB显存跑不动7B大模型

显存带宽与KV Cache:为什么8GB显存跑不动7B大模型

1. 显存不是“显卡内存”那么简单:从GPU架构看为什么8GB显存跑不动7B模型很多人第一次尝试本地运行大语言模型时,都会被一个反直觉的现象击中:手头明明是RTX 4090(24GB显存)或甚至A100(40GB)&am…

2026/10/18 9:41:32 阅读更多 →
Agent记忆系统设计:短期对话管理与长期向量存储的完整实践指南

Agent记忆系统设计:短期对话管理与长期向量存储的完整实践指南

最近在做Agent相关的一个项目,被问得最多的一个问题就是:“我的机器人一聊长就忘,前面说过的事后面全不记得,这记忆到底怎么设计?”我一看,很多人是把所有对话历史一股脑塞进Prompt,塞到报错&am…

2026/10/18 9:41:32 阅读更多 →
前端任务进度卡0/1:三个静默失败点的定位与工程修复

前端任务进度卡0/1:三个静默失败点的定位与工程修复

1. 现象确认:任务卡在 0/1,但不是没跑先说明一下背景。我这边内部效率工具里有一个叫 WorkBuddy 的模块,每天会推一批小任务,其中有一个“探索优秀灵感”的任务,规则是:从推荐卡片里点开一篇内容&#xff0…

2026/10/18 9:40:32 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →