宏、宏定义
文章目录一、定义二、宏的使用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/8/3 19:26:06 阅读更多 →
2026年UV能量计TOP5厂家评测:鑫衡森仪器凭自研+代理双驱动登顶

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

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

2026/8/3 19:26:06 阅读更多 →
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/8/3 19:26:06 阅读更多 →

最新新闻

无名杀:免费开源的终极三国杀体验,打造你的专属卡牌世界

无名杀:免费开源的终极三国杀体验,打造你的专属卡牌世界

无名杀:免费开源的终极三国杀体验,打造你的专属卡牌世界 【免费下载链接】noname 项目地址: https://gitcode.com/GitHub_Trending/no/noname 想要体验经典三国杀游戏但不想付费?渴望拥有完全自定义的武将和卡牌?无名杀正…

2026/8/3 20:57:10 阅读更多 →
KW音乐源接口安全升级挑战与智能适配技术解析

KW音乐源接口安全升级挑战与智能适配技术解析

KW音乐源接口安全升级挑战与智能适配技术解析 【免费下载链接】lx-source lx-music-custom-source 洛雪音乐自定义解析源 项目地址: https://gitcode.com/gh_mirrors/lx/lx-source 在第三方API频繁变更的云音乐生态中,开源音乐源项目面临的核心挑战是如何在保…

2026/8/3 20:57:10 阅读更多 →
如何3分钟解决BT下载慢问题:trackerslist完整配置指南

如何3分钟解决BT下载慢问题:trackerslist完整配置指南

如何3分钟解决BT下载慢问题:trackerslist完整配置指南 【免费下载链接】trackerslist Updated list of public BitTorrent trackers 项目地址: https://gitcode.com/GitHub_Trending/tr/trackerslist BT下载速度慢如蜗牛?资源连接困难&#xff1f…

2026/8/3 20:57:10 阅读更多 →
网络安全系统化学习指南:从基础框架到实战技能树

网络安全系统化学习指南:从基础框架到实战技能树

1. 网络安全全景图:为什么需要系统化学习?2003年我刚开始接触网络安全时,以为会几个黑客工具就能横行网络。直到第一次参加企业级渗透测试,面对复杂的网络架构和层层防御,才意识到没有系统化知识体系的致命缺陷。网络安…

2026/8/3 20:57:10 阅读更多 →
阿里云99元服务器实战:2G内存部署MySQL、Redis等微服务组件

阿里云99元服务器实战:2G内存部署MySQL、Redis等微服务组件

1. 从一次冲动消费说起:99元/年的阿里云服务器,是“真香”还是“鸡肋”? 去年年底,我在浏览开发者社区时,被一个促销活动吸引了眼球:“阿里云ECS经济型e实例,99元一年”。这个价格,对…

2026/8/3 20:57:10 阅读更多 →
【华为OD机试真题 新系统】1066、语义化版本号对比 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

【华为OD机试真题 新系统】1066、语义化版本号对比 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

文章目录 一、题目 🎃题目描述 🎃输入输出 🎃样例1 🎃样例2 🎃样例3 🎃样例4 二、代码与思路参考 🎈C++语言思路 🎉C++代码 🎈Java语言思路 🎉Java代码 🎈Python语言思路 🎉Python代码 🎈C语言思路 🎉 C语言代码 🎈JS语言思路 🎉JS代码 作者:…

2026/8/3 20:56:09 阅读更多 →

日新闻

3个让你工作效率翻倍的Umi-OCR实战技巧:免费离线文字识别完全指南

3个让你工作效率翻倍的Umi-OCR实战技巧:免费离线文字识别完全指南

3个让你工作效率翻倍的Umi-OCR实战技巧:免费离线文字识别完全指南 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。…

2026/8/3 0:00:47 阅读更多 →
[具身智能-181]:PC+服务器+具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构

[具身智能-181]:PC+服务器+具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构

PC服务器具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构一、前言:具身智能需要“混合算力闭环系统”传统人工智能依赖云端静态数据集训练,不具备物理交互能力,无法适应真实世界的不确定性。具身智能(Embodied…

2026/8/3 0:00:47 阅读更多 →
[具身智能-181]:大分布式通信模型对比:看懂为什么 DDS 是 ROS2 底层通信最优解

[具身智能-181]:大分布式通信模型对比:看懂为什么 DDS 是 ROS2 底层通信最优解

前言构建机器人、具身智能这类分布式实时系统,通信底座直接决定整套系统的实时性、容错性、组网能力。分布式领域长期存在 4 类经典通信架构:点对点模式、Broker 中间代理模式、广播模式、以数据为中心(DDS)模式。很多开发者疑惑&…

2026/8/3 0:00:47 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/3 4:58:13 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/3 1:53:31 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/3 4:36:35 阅读更多 →

月新闻

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

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

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

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

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

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

2026/8/3 5:19:38 阅读更多 →
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/3 8:27:36 阅读更多 →