#define定义宏

devtools/2024/11/18 8:18:20/

#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

 


http://www.ppmy.cn/devtools/134907.html

相关文章

go channel中的 close注意事项 range取数据

在使用 Go 语言中的 close 函数时,有一些注意事项需要牢记,以确保程序的健壮性和正确性: 1. **仅用于通道(channel)**: - close 函数只能用于关闭通道,不能用于关闭文件、网络连接或其他资源…

设计一个设备探测1pv

探测**1 pV(皮伏特,)的微弱电信号是一个非常具有挑战性但可行的目标。这种极低电压的探测需要超高灵敏度的电路设计和信号处理技术,同时要尽量抑制噪声对信号的干扰。 以下是设计此类设备的一些核心思路和技术方向: …

如何让手机ip变成动态

在数字化浪潮中,手机已成为我们日常生活中不可或缺的一部分。无论是浏览网页、使用社交媒体还是进行在线购物,手机都扮演着举足轻重的角色。然而,在享受网络带来的便利时,我们也需要关注网络安全和隐私保护。静态IP地址可能让手机…

Debezium系列之:Debezium3版本使用快照过程中的指标

Debezium系列之:Debezium3版本使用快照过程中的指标 一、背景二、技术原理三、增量快照四、阻塞快照指标一、背景 使用快照技术的过程中可以观察指标,从而确定快照的进度二、技术原理 Debezium系列之:Debezium 中的增量快照Debezium系列之:Incremental snapshotting设计原理…

[241115] Debian 12.8 发布 | Mistral AI 推出批量 API,成本降低 50%

目录 Debian 12.8 发布Mistral AI 推出批量 API,成本降低 50% Debian 12.8 发布 Debian 项目正式发布了第八个稳定版更新 Debian 12.8 (代号 bookworm)。此次更新主要修复了安全漏洞,并调整了一些严重问题。安全公告已单独发布,并在更新说明…

Python3访问MySQL数据库快速入门Demo

要实现一个简单的IM(即时通讯)系统,支持用户注册、登录和聊天记录存储,你可以使用Python和mysql数据库。以下是一个基本的实现示例: 要使用MySQL创建表并通过Python提供一个API服务,你可以使用Flask框架来实…

《Probing the 3D Awareness of Visual Foundation Models》论文解析——单图像表面重建

一、论文简介 论文讨论了大规模预训练产生的视觉基础模型在处理任意图像时的强大能力,这些模型不仅能够完成训练任务,其中间表示还对其他视觉任务(如检测和分割)有用。研究者们提出了一个问题:这些模型是否能够表示物体…

Python自动检测requests所获得html文档的编码

使用chardet库自动检测requests所获得html文档的编码 使用requests和BeautifulSoup库获取某个页面带来的乱码问题 使用requests配合BeautifulSoup库,可以轻松地从网页中提取数据。但是,当网页返回的编码格式与Python默认的编码格式不一致时&#xff0c…