宏函数的使用

 宏函数的特点:

  1. 参数没有类型检查,仅仅是文本替换,因此使用不当容易引起错误。
  2. 宏函数的替换过程发生在编译之前的预处理阶段,不涉及函数调用开销,效率较高。
  3. 可以用来定义常量、实现简单的算法、封装编译开关等。
/*
* ===============================================
*   文件名称:01_宏函数.c
*   创 建 者: mf
*   创建日期:2024年04月12日
*   描述内容:
*       此程序展示了如何在C语言中使用预处理器宏定义简单函数,
*       包括一个计算平方的宏QUEARE和一个求两数较大值的宏MAXVALUE。
* ===============================================
*/#include <stdio.h>// 定义宏QUEARE,接收一个参数num,计算并返回num的平方
#define QUEARE(num) ((num)*(num))// 定义宏MAXVALUE,接收两个参数a和b,返回a和b之间的较大值
#define MAXVALUE(a, b) ((a) > (b) ? (a) : (b))int main(int argc, char *argv[]) 
{// 定义变量num并赋值为5int num = 5;// 使用宏QUEARE计算num的平方,并将结果存储在result变量中int result = QUEARE(num);// 输出计算后的平方结果printf("The square of %d is: result = %d\n", num, result);// 定义两个整数变量a和b,并分别赋值为5和10int a = 5;int b = 10;// 使用宏MAXVALUE计算a和b之间的较大值,并将结果存入resultresult = MAXVALUE(a, b);// 输出两数之间的较大值printf("The maximum value between %d and %d is: result = %d\n", a, b, result);// 主函数返回0,表示程序正常结束return 0;
}

然而,由于宏函数不具备真正的函数那样的作用域和类型安全,现代C++编程实践中倾向于使用内联函数(inline function)或模板函数(template function)替代宏函数来实现类似的效果,以提升代码的可读性和安全性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/809811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【保姆级讲解Nginx】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

拿到迅雷网盘推广授权,离财富自由更进一步

为了提高平台知名度、增加平台用户数量&#xff0c;迅雷网盘推出了网盘推广的新项目。网盘推广的奖励很丰厚&#xff0c;只要有人点击、下载你分享的资料&#xff0c;你就能获得佣金。听到这里&#xff0c;是不是已经有人心动了&#xff1f;心动的人一定要看完下面的网盘推广&a…

【开发篇】十七、基准测试框架JMH

文章目录 1、JMH2、运行方式二3、死代码与黑洞变量4、可视化分析5、案例&#xff1a;日期格式化方法性能测试6、总结7、整合到SpringBoot 判断一个方法的耗时 ⇒ endTime-startTime ⇒ 不准确&#xff0c;首先部分对象懒加载&#xff0c;第一次请求会慢一些&#xff0c;其次&am…

systemd的unit

systemd 是一个用于管理 Linux 系统初始化和服务的系统和服务管理器。在 systemd 中&#xff0c;不同类型的单元&#xff08;unit&#xff09;用于配置不同的系统资源和服务。 automount: automount 单元用于自动挂载文件系统。它会在需要时自动挂载指定的路径&#xff0c;例如…

YOLOv8改进 | 检测头篇 | 自研超分辨率检测头HATHead助力超分辨率检测(混合注意力变换器检测头)

一、本文介绍 本文给大家带来的改进机制是由由我本人利用HAT注意力机制(超分辨率注意力机制)结合V8检测头去掉其中的部分内容形成一种全新的超分辨率检测头。混合注意力变换器(HAT)的设计理念是通过融合通道注意力和自注意力机制来提升单图像超分辨率重建的性能。通道注意…

多无人机集群协同避障

matlab2020a正常运行 场景1规划结果 场景2规划结果 场景3规划结果 代码地址&#xff1a; 多无人机集群协同避障效果&#xff08;5架&#xff09;资源-CSDN文库

【D3.js Tidy tree绘制树形图,单棵树,左右树,平移,拖拽,树形中的天花板实现,源码实现】

这里写自定义目录标题 D3.js Tidy tree绘制树形图,单棵树,左右树,平移,拖拽,树形中的天花板实现,源码实现D3 简介D3 官网有很多例子,这里说的是Tidy tree[树形图表svg][左侧关系->中间对象<-右侧关系 ] 树形实现 D3.js Tidy tree绘制树形图,单棵树,左右树,平移,拖拽,树形…

BM25和语言模型的改进研究

原文链接&#xff1a; BM25和语言模型的改进研究 摘要&#xff1a; 近期关于搜索引擎排名函数的研究报告指出&#xff0c;BM25和带Dirichlet平滑的语言模型有所改进。本研究通过在INEX 2009维基百科语料库上训练&#xff0c;然后在INEX 2010和9个TREC语料库上测试&#xff0…

ES6 全详解 let 、 const 、解构赋值、剩余运算符、函数默认参数、扩展运算符、箭头函数、新增方法,promise、Set、class等等

目录 ES6概念ECMAScript6简介ECMAScript 和 JavaScript 的关系ES6 与 ECMAScript 2015 的关系 1、let 、 const 、var 区别2、变量解构赋值1、数组解构赋值2、对象解构赋值3、字符串的解构赋值 3、展开剩余运算符1、**展开运算符(...)**2、**剩余运算符(...)** 4、函数的拓展函…

前端用 HTML5 + CSS3 + JavaScript,后端连接什么数据库更简单?

当前端使用 HTML5、CSS3 和 JavaScript 进行开发时&#xff0c;后端连接何种数据库是一个非常重要的问题&#xff0c;因为数据库的选择直接影响着后端代码的编写、数据存储与查询的效率以及系统的可维护性。 1. 关系型数据库&#xff08;SQL 数据库&#xff09;&#xff1a; …

【JAVA】Assert.isTrue()来做判断,并抛出异常

Assert.isTrue() 是一种断言&#xff08;Assertion&#xff09;方法&#xff0c;通常用于测试或验证代码中的逻辑条件是否为真。在许多编程语言和测试框架中都有类似的断言方法&#xff0c;用于编写单元测试或确保代码中的条件符合预期。 在 Java 中&#xff0c;Assert.isTrue…

两两交换链表中的节点 - LeetCode 热题 30

大家好&#xff01;我是曾续缘&#x1f916; 今天是《LeetCode 热题 100》系列 发车第 30 天 链表第 9 题 ❤️点赞 &#x1f44d; 收藏 ⭐再看&#xff0c;养成习惯 两两交换链表中的节点 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点…

CV界,卷积神经网络真的干不过Transformer了吗?

一、 CNN及其优势和局限性 其他答主回答的角度和内容非常全面&#xff0c;答主也从自己的角度谈谈这个问题。我们不妨先看一下CNN的结构。CNN依靠卷积拥有感受野&#xff0c;具有了时移不变性。 1.1 CNN的局限性 可以看到随着卷积层的增加&#xff0c;feature maps上的一个…

3.00 版本来了!DolphinDB V2.00.12 V3.00.0 正式发布!

一文带你了解 DolphinDB 全新版本升级&#xff01; 本次更新后&#xff0c;3.00.0版本将成为 DolphinDB 的最新版&#xff0c;2.00.12版本变更为稳定版&#xff0c;此前发布的1.30.23版本将成为1.30系列的最后一个版本。接下来&#xff0c;带大家一起看看 DolphinDB V2.00.12 …

【Linux系统编程】第一弹---背景介绍

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、Linux 背景介绍 1.1、发展史 1.1.1、UNIX发展的历史 1.1.2、Linux发展历史 2、开源精神 3、Linux内核官网 4、企业应用…

svg等比例缩放且不变形,需要用到viewBox

svg等比例缩放且不变形&#xff0c;需要用到viewBox <svg xmlns"http://www.w3.org/2000/svg" version"1.1" width"600" viewBox"0 0 600 500"> </svg> 这里我的画布宽度是 width"600" 而 viewBox"0 0 …

windows下安装yolov8环境(详细图文教程)

目录 一&#xff1a;前言 二&#xff1a;安装yolov8 一&#xff1a;前言 最近看了 YOLO 的发展史&#xff0c;发现在机器视觉领域的应用非常广泛&#xff0c;f刚好最近一直在做机器视觉的工作&#xff0c;特此记录下搭建yolov的环境。我们使用的版本是yolov8的就用这个作为演…

带计步跑步功能,余额宝、早起打卡与积分商城金融众筹一体化平台

检测自动增加步数 Bug问题: 无 测试环境: PHP5.6Mysql5.6 源码简介: 袋鼠投资理财&#xff0c;本程序有技步跑步功能&#xff0c;余额宝功能&#xff0c;早起打卡&#xff0c;积分商城&#xff0c;抽奖功能等各方面为一体的综合理财项目。 功能列表: 袋鼠投资理财&#xf…

蚓链使得产业间资源共享变得更为简单高效

数字化营销平台在促进产业间资源共享方面确实发挥着至关重要的作用&#xff0c;看蚓链数字化营销平台是如何使得资源共享变得更为简单和高效的&#xff01; 蚓链数字化营销平台通过提供统一的信息发布和获取渠道&#xff0c;降低了产业间信息共享的门槛。企业可以轻松地在平台…

实体抽取全解析:技术与实战

目录 一、前言二、实体抽取技术概览基于规则的实体抽取基于统计的实体抽取基于深度学习的实体抽取 三、实体抽取的发展历程早期的实体抽取方法基于规则和词典的方法基于特征的机器学习方法 深度学习时代的实体抽取从传统模型到神经网络序列标注模型的兴起预训练语言模型的革命 …