news 2026/6/21 9:42:39

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/20 5:15:58

OBS多路推流插件终极指南:5大实战挑战解决方案

想要在多个直播平台实现同步推流却遇到技术瓶颈&#xff1f;OBS多路推流插件为你提供专业解决方案。本文通过"问题-解决方案-实施步骤"的创新结构&#xff0c;带你全面掌握这款强大的多平台直播工具&#xff0c;3分钟搞定复杂配置&#xff0c;一键解决推流难题。 【免…

作者头像 李华
网站建设 2026/6/20 4:04:17

7、游戏数据探查与分析:工具与内存原理

游戏数据探查与分析:工具与内存原理 在游戏开发与研究过程中,我们常常需要对游戏的进程和内存进行深入探查,以了解游戏的运行机制。下面将介绍两款实用工具——Process Monitor和Process Explorer的使用,以及游戏数据在内存中的表现形式。 Process Monitor和Process Expl…

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

RimSort真的能让你的《RimWorld》模组管理不再烦恼吗?

RimSort真的能让你的《RimWorld》模组管理不再烦恼吗&#xff1f; 【免费下载链接】RimSort 项目地址: https://gitcode.com/gh_mirrors/ri/RimSort 还在为《RimWorld》模组加载顺序头疼吗&#xff1f;每次添加新模组都担心游戏崩溃&#xff1f;别着急&#xff0c;今天…

作者头像 李华
网站建设 2026/6/20 18:25:24

23、API 景观的八个 V 特性解析

API 景观的八个 V 特性解析 在当今数字化转型的浪潮中,API(应用程序编程接口)的重要性日益凸显。API 景观涵盖了众多方面,其中有八个关键特性,即 Volume(数量)、Velocity(速度)、Vulnerability(脆弱性)、Visibility(可见性)、Versioning(版本控制)、Volatility…

作者头像 李华
网站建设 2026/6/21 7:50:54

原神帧率限制突破指南

原神帧率限制突破指南 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 技术原理深度解析 这款工具采用创新的内存写入技术&#xff0c;通过系统级API直接修改游戏进程中的帧率参数。其核…

作者头像 李华
网站建设 2026/6/14 20:39:36

24、A*算法在游戏自动化中的应用与实践

A*算法在游戏自动化中的应用与实践 传统路径算法的局限性与A*算法的诞生 在路径搜索问题中,某些算法虽然能找到最快路径,但代价巨大。例如,若围绕障碍物的路径长度为 50 个单位,该算法可能会打开约 7,854 个节点(通过公式 π 50 = 7,854 计算)。而贪心最佳优先搜索虽能…

作者头像 李华