首页 > 其他分享 >#define定义宏

#define定义宏

时间:2024-11-17 23:18:29浏览次数:3  
标签:定义 符号 stuff 参数 替换 define

#define机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为宏或定义宏。

宏的申明方式:

#define name(parament-list)stuff

其中的parament-list是一个由逗号隔开的符号表,它们可能出现在stuff中。

注意:

1.参数列表的左括号必须与name紧邻

2.如果两者之间有任何空白存在,参数列表就会就会被解释为stuff的一部分

提示:所以用于对数值表示式进行求值的宏定义都应该加上括号,避免在使用宏时由于参数中的操作符或临近操作符之间不可预料的相互作用(优先级问题)

#define替换规则

1.在调用宏时,首先对参数进行检查,看看是否包含任何由#define定义的符号。如果是,它们首先被替换。

2.替换文本随后被插入到程序中原来文本的位置。对于宏,参数名被他们的值所替换。

3.最后,再次对结果文件进行扫描,看看它是否包含任何由#define定义的符号。如果是,就重复上述处理过程。

注意:

1.宏参数和#define定义中可以出现其他#define定义的符号,但是对于宏,不能出现递归。

2.当预处理器搜索#define定义的符号的时候,字符串常量的内容并不被搜索。

27e1ebb5bdd64b3ba3586cf9e4aea75c.png

 那么今天分享就到这里,谢谢大家!!!

cedc60eea2484f6c93a32d68efb1aaa3.png

 

标签:定义,符号,stuff,参数,替换,define
From: https://blog.csdn.net/2403_86949771/article/details/143840804

相关文章

  • 【预训练-微调】迁移学习项目实战自定义数据集宝可梦精灵-学习笔记
    本学习笔记来源于B站:深度学习—迁移学习项目实战自定义数据集宝可梦精灵。在本预训练-微调代码中,重点要学习的内容包括:加载官方提供的经典网络架构resnet18和已经训练好的模型,对最后一层全连接层进行修改,改为适合自己任务的网络架构。在此基础上,训练最后一层全连接层,并保存最......
  • 从 AI 大模型的定义、应用场景、优势以及挑战等方面,探讨 AI 是如何重塑软件开发的各个
    随着人工智能技术的迅猛发展,特别是大规模预训练模型(大模型)的兴起,软件开发行业正经历着前所未有的变革。大模型是指那些参数量巨大、能够处理复杂任务的人工智能模型,如GPT-3、BERT等。这些模型不仅在自然语言处理领域取得了突破性进展,还在计算机视觉、语音识别等多个领域展现出......
  • 字节跳动出大招!IconPark图标库,自定义图标,好用到停不下来!
    大家好,欢迎来到程序视点!我是小二哥!在项目开发过程中,图标是永远绕不开的话题。今天就和大家来聊一聊~图标库现状问题图标数量少难以满足产品项目需求的,或遇到缺失图标的,往往还是需要设计师按所选图标的风格自己绘制。主要以单色的图标为主在日渐繁荣(要求越来......
  • 【C++】深入理解自定义 list 容器中的 list_iterator:迭代器实现详解
    个人主页:起名字真南的CSDN博客个人专栏:【数据结构初阶】......
  • (12-3-01)使用YOLOv8识别检测交通标志:基于YOLOv8的交通标志检测模型(1)使用自定义交通标志
    1.5 基于YOLOv8的交通标志检测模型本节的内容主要介绍了基于YOLOv8的交通标志检测模型的构建与训练过程。首先,使用YOLOv8的预训练模型,并通过定制的数据集对其进行了训练,以检测交通标志。在训练过程中,评估了不同的参数和优化器的影响,通过调整批量大小、学习率等参数来优化模......
  • C#可空类型详解:定义、判断值与访问方法
    C#中的可空类型(NullableTypes)在C#中,值类型(如int、float、struct等)默认情况下不能表示“无值”或“未知”的状态。为了解决这个问题,C#引入了可空类型(NullableTypes),它允许值类型表示一个额外的状态:已赋值(HasValue)或未赋值(无值,即Null)。可空类型是通过在值类型后面加上问号(?......
  • thinkphp6 使用自定义命令,生成数据库视图
    在ThinkPHP命令行工具中,你可以为选项设置别名,通过为选项指定一个简短的别名来简化命令输入。例如,如果你希望--force-recreate选项有一个简短的别名-f,你可以通过在addOption方法中设置第二个参数来实现这一点。示例:为选项设置别名在addOption方法的第二个参数中设置别......
  • 大数据-226 离线数仓 - Flume 优化配置 自定义拦截器 拦截原理 了 拦截器实现 Java
    点一下关注吧!!!非常感谢!!持续更新!!!Java篇开始了!目前开始更新MyBatis,一起深入浅出!目前已经更新到了:Hadoop(已更完)HDFS(已更完)MapReduce(已更完)Hive(已更完)Flume(已更完)Sqoop(已更完)Zookeeper(已更完)HBase(已更完)Redis(已更完)Kafka(已更完)Spark(已更完)Flink(已更完)ClickHouse(已更完)Kudu(......
  • 鸿蒙NEXT自定义组件:太极Loading
     【引言】(完整代码在最后面)本文将介绍如何在鸿蒙NEXT中创建一个自定义的“太极Loading”组件,为你的应用增添独特的视觉效果。【环境准备】电脑系统:windows10开发工具:DevEcoStudioNEXTBeta1BuildVersion:5.0.3.806工程版本:API12真机:mate60pro语言:ArkTS、ArkUI......
  • 继承的概念及定义
    以下是对上述内容的详细解释:一、继承的概念及定义(一)继承的概念代码复用手段:继承是面向对象程序设计中实现代码复用的重要手段。它允许在保持原有类特性的基础上进行扩展,产生新的派生类,增加方法和属性,体现了由简单到复杂的认知过程,是类设计层次的复用,区别于函数层次的复用。......