news 2026/6/15 14:27:17

C++ 宏定义相关的案例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++ 宏定义相关的案例

这段C++代码演示了宏定义的高级用法,实现了一个计算向量元素极差的程序。通过宏定义了字符串转换(toStr)、输入简化(io)、比较函数生成(FUNCTION)、常量值(INF)和循环结构(foreach)。程序读取n个整数后,使用宏生成的minimum和maximum函数找出极值,最后输出"Result = <极差>"。代码展示了宏如何创建语法糖来简化代码,但也体现了宏可能带来的复杂性。例如输入"4\n1 2 3 4"会输出"Result =

/* 在此处输入宏指令 */#definetoStr(x)#x#defineio(v)cin>>v#defineFUNCTION(name,op)voidname(int&a,intb){if(b op a)a=b;}#defineINF1000000000#defineforeach(v,i)for(inti=0;i<v.size();i++)#include<iostream>#include<vector>usingnamespacestd;#if!defined toStr||!defined io||!defined FUNCTION||!defined INF#errorMissing preprocessor definitions#endifFUNCTION(minimum,<)FUNCTION(maximum,>)intmain(){intn;cin>>n;vector<int>v(n);foreach(v,i){io(v)[i];}intmn=INF;intmx=-INF;foreach(v,i){minimum(mn,v[i]);maximum(mx,v[i]);}intans=mx-mn;cout<<toStr(Result=)<<' '<<ans;return0;}

这段代码实现了一个计算向量中最大值与最小值之差的功能,并演示了宏定义的各种用法。具体功能如下:

主要功能:

  1. 读取一个整数n,表示向量的大小
  2. 读取n个整数到向量v
  3. 找出向量中的最大值mx和最小值mn
  4. 计算最大值与最小值的差
  5. 输出格式为:“Result = <差值>”

宏定义的具体作用:

  1. #define toStr(x) #x

    • 字符串化操作符,将参数转换为字符串字面量
    • toStr(Result =)会扩展为"Result ="
  2. #define io(v) cin >> v

    • 简化输入操作
    • io(v)[i]扩展为cin >> v[i]
  3. #define FUNCTION(name, op)

    voidname(int&a,intb){if(b op a)a=b;}
    • 创建比较函数宏
    • FUNCTION(minimum, <)生成:
      voidminimum(int&a,intb){if(b<a)a=b;}
    • FUNCTION(maximum, >)生成:
      voidmaximum(int&a,intb){if(b>a)a=b;}
  4. #define INF 1000000000

    • 定义一个大数作为初始值
  5. #define foreach(v, i)

    for(inti=0;i<v.size();i++)
    • 创建一个类似 foreach 的循环结构

示例运行:

输入:

4 1 2 3 4

输出:

Result = 3

解释:4 - 1 = 3

这段代码展示了如何在 C++ 中使用宏来创建自定义的语法糖,使代码更简洁、更具表达力,但也显示了宏可能带来的复杂性和潜在风险(如运算符优先级问题)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 13:19:08

biliTickerBuy自动化测试框架搭建:从零到一的实践指南

biliTickerBuy自动化测试框架搭建&#xff1a;从零到一的实践指南 【免费下载链接】biliTickerBuy b站 会员购 抢票 漫展 脚本 bilibili 图形化 纯接口 验证码预演练习 项目地址: https://gitcode.com/GitHub_Trending/bi/biliTickerBuy 如何为复杂的抢票系统构建稳定可…

作者头像 李华
网站建设 2026/6/15 14:21:06

GLM-4.6-FP8震撼升级:200K上下文+超强编码能力

GLM-4.6-FP8震撼升级&#xff1a;200K上下文超强编码能力 【免费下载链接】GLM-4.6-FP8 GLM-4.6-FP8在GLM-4.5基础上全面升级&#xff1a;上下文窗口扩展至200K tokens&#xff0c;支持更复杂智能体任务&#xff1b;编码性能显著提升&#xff0c;在Claude Code等场景生成更优质…

作者头像 李华
网站建设 2026/6/13 16:51:42

SketchUp STL插件完整指南:从建模到3D打印的专业技巧

还在为SketchUp设计的精美模型无法直接3D打印而烦恼吗&#xff1f;传统的建模软件与3D打印格式之间总是存在一道难以逾越的鸿沟。SketchUp STL插件正是为打破这一壁垒而生&#xff0c;它让数字设计到实体制造的转换变得前所未有的简单。 【免费下载链接】sketchup-stl A Sketch…

作者头像 李华
网站建设 2026/6/13 5:21:28

Vue-Office大型PDF文件预览性能优化完整解决方案:3步实现高效实践

Vue-Office大型PDF文件预览性能优化完整解决方案&#xff1a;3步实现高效实践 【免费下载链接】vue-office 项目地址: https://gitcode.com/gh_mirrors/vu/vue-office 你是否曾经遇到过打开大型PDF文件时浏览器卡顿甚至崩溃的尴尬场景&#xff1f;在企业文档管理系统、…

作者头像 李华
网站建设 2026/6/10 16:56:10

小红书数据采集终极指南:从技术原理到实战应用深度解析

小红书数据采集终极指南&#xff1a;从技术原理到实战应用深度解析 【免费下载链接】XHS-Downloader 免费&#xff1b;轻量&#xff1b;开源&#xff0c;基于 AIOHTTP 模块实现的小红书图文/视频作品采集工具 项目地址: https://gitcode.com/gh_mirrors/xh/XHS-Downloader …

作者头像 李华
网站建设 2026/6/13 17:42:35

15、代码注入与控制流操纵技术详解

代码注入与控制流操纵技术详解 代码注入基础 代码注入是一项强大的技术,它允许我们将自定义代码插入到目标进程中执行。下面我们将详细介绍代码注入的相关技术和操作步骤。 生成骨架shellcode与分配内存 首先,我们需要生成用于线程劫持的shellcode,并为其分配内存。以下…

作者头像 李华