宏定义中 ## 和 # 的作用

1. ## 的作用

## 称为连接符,用来将宏参数或其他的串连接起来。

例1:

> #define COMBIN(arg) my##arg则> COMBIN(abc)相当于 myabc
例2:
#define CON1(a, b) a##e##b
#define CON2(a, b) a##b##00
那么:printf("%f\n", CON1(8.5, 2));
printf("%d\n", CON2(12, 34));
将被展开为:printf("%f\n", 8.5e2);
printf("%d\n", 123400);

将上面的例子补充完整:

#include <stdio.h>
#define CON1(a, b) a##e##b
#define CON2(a, b) a##b##00
int main() {
printf("%f\n", CON1(8.5, 2));
printf("%d\n", CON2(12, 34));
return 0;
}

运行结果:
850.000000
123400

2. # 的作用

是“字符串化”的意思。出现在宏定义中的#是把跟在后面的参数转换成一个字符串,也就是在宏参数的开头和末尾添加引号。

例1:

> #define COMBIN(arg) my#arg则> COMBIN(abc)相当于 my"abc"

例2:

#define STR(s) #s
那么
printf("%s", STR(www.baidu.com));
printf("%s", STR("www.baidu.com"));
分别被展开为:
printf("%s", "www.baidu.com");
printf("%s", "\"www.baidu.com\"");

可以发现,即使给宏参数“传递”的数据中包含引号,使用 # 仍然会在两头添加新的引号,而原来的引号会被转义。

将上面的例子补充完整:

#include <stdio.h>
#define STR(s) #s
int main() {
printf("%s\n", STR(www.baidu.com));
printf("%s\n", STR("www.baidu.com"));
return 0;
}

运行结果:
www.baidu.com
"www.baidu.com"

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

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

相关文章

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《基于分布鲁棒优化的广义共享储能容量配置方法》

这个标题涉及到储能系统的容量配置方法&#xff0c;具体而言&#xff0c;是一种基于分布鲁棒优化的广义共享储能容量配置方法。让我们逐步解读&#xff1a; 基于分布鲁棒优化&#xff1a; 这表明该方法采用了一种优化技术&#xff0c;即分布鲁棒优化。分布鲁棒优化通常是指在考…

大数据-之LibrA数据库系统告警处理(ALM-37016 MPPDBServer执行XLOG日志归档命令异常)

告警解释 当集群中的CN实例或者DN实例执行归档命令归档XLOG日志失败时&#xff0c;产生该告警。 在下次执行成功时告警自动恢复。 告警属性 告警ID 告警级别 可自动清除 37016 严重 是 告警参数 参数名称 参数含义 ServiceName 产生告警的服务名称 RoleName 产生…

c++ 执行系统命令

示例一&#xff1a; #include <cstdlib> // 必须包含这个头文件来使用system()int main() {system("sleep 10"); // 塞执行return 0; }程序会等待10秒后&#xff0c;执行完成使用system("sleep 10 &");可以实现非阻塞执行 示例二&#xff1a; …

11.29 C++ 作业

自己封装一个矩形类(Rect)&#xff0c;拥有私有属性:宽度(width)、高度(height)&#xff0c; 定义公有成员函数: 初始化函数:void init(int w, int h) 更改宽度的函数:set_w(int w) 更改高度的函数:set_h(int h) 输出该矩形的周长和面积函数:void show() #include <io…

PHP:处理数据库查询数据

注&#xff1a; DB_num_rows($result5)可以替换为mysqli_num_rows($result5) DB_fetch_array($result5)可以替换为mysqli_fetch_assoc($result5) 一、查询单个数据 代码解析 1、SQL语句 查询表www_users中当userid等于变量$_SESSION[UserID]时的depart_code值 $sql &qu…

两台电脑如何快速传输几百G文件,这款文件传输软件真快

当我们需要传输数百GB的文件时&#xff0c;使用传统工具对于大型文件传输来说往往效率低下。这些方法可能需要数小时&#xff0c;甚至数天才能完成传输。然而&#xff0c;现代生活和工作中&#xff0c;我们经常需要以更快速、更高效的方式传输大文件&#xff0c;无论是因为工作…

第72讲:MySQL数据库锁机制剖析:行级锁、间隙锁与临键锁详解及应用指南

文章目录 1.行级锁的概念2.行锁的概念以及基本使用2.1.行锁的概念2.2.常见的SQL语句所对应的行锁类别2.3.行锁的基本使用 3.间隙锁和临键锁的概念以及基本使用3.1.间隙锁和临键锁的概念3.2.间隙锁和临键锁的基本使用 1.行级锁的概念 行级锁指的是&#xff0c;每次操作锁住的是…

11.兔子生崽问题【2023.11.26】

1.问题描述 有一对兔子&#xff0c;从出生后第3个月起每个月都生一对兔子&#xff0c;小兔子长到第三个月后每个月又生一对兔子&#xff0c;假如兔子都不死&#xff0c;问 第二十个月的兔子对数为多少对&#xff1f; 2.解决思路 3.代码实现 #include<stdio.h> int mai…

儿童绘本故事之乐小鱼的龙舟体验

《乐小鱼的龙舟体验》 Chapter 1: 破浪前行的盛宴在2023年11月26日的清晨&#xff0c;顺德迎来了一场震撼心灵的盛宴——中国龙舟大奖赛。湖面上&#xff0c;龙舟竞渡&#xff0c;破浪前行&#xff0c;为这座城市注入了一份激情的节奏。On the morning of November 26, 2023, …

揭秘近期CSGO市场小幅回暖的真正原因

揭秘近期CSGO市场小幅回暖的真正原因 最近市场小幅度回暖&#xff0c;第一个原因则是到处都在说buff要开租赁了&#xff0c;市场要开始爆燃了。童话听到这些消息实在是绷不住了&#xff0c;出来给大家讲一下自己的看法&#xff0c;大家理性思考一下。 Buff出不出租赁跟市场燃不…

MacBook续命,XCode硬盘占用问题

MacBook续命&#xff0c;XCode硬盘占用问题 参考资料 xcode由于真机运行的时候需要把真机的配置拷贝到 &#xff5e;/Library/Developer/Xcode/iOS\ DeviceSupport 这个文件夹下&#xff0c;这样运行一段时间之后&#xff0c;这个文件夹就大到占满了存储空间&#xff0c;之后…

Structured Streaming的模型介绍与实际操作

微批处理&#xff08;Micro-Batching&#xff09; 微批处理是 Structured Streaming 默认的处理模型。 微批处理 (Micro-batching): 在微批处理模型中&#xff0c;实时数据流被分割成小的批次。这些批次按顺序处理&#xff0c;每个批次处理像一个小的批处理作业。处理完一个…

恋上数据结构与算法之二叉堆

文章目录 需求分析Top K 问题堆堆的基本接口设计二叉堆(Binary Heap)最大堆添加思路交换位置的优化实现 删除思路流程图解实现 replace批量建堆自上而下的上滤自下而上的下滤效率对比复杂度计算实现 完整代码 最小堆比较器解析Top K 问题问题分析代码实现内部方法分析问题 2 堆…

【程序员养生心得】—— 编程之路,健康同行

身为程序员&#xff0c;我们似乎总和亚健康、熬夜、颈椎病等标签紧密相连。但工作虽重要&#xff0c;健康价更高。在此&#xff0c;我想与大家分享一些在编程之路上的养生心得&#xff0c;希望我们都能在职业发展的同时&#xff0c;照顾好自己。 定时休息&#xff0c;活动身体&…

小程序云开发中引入vant

首先看一下云开发中的小程序的目录结构 安装 vant 上面是官方的方法 具体到我们的项目是这样子的 最后&#xff0c;构建一下就可以了

rv1126-rv1109-rk809

是这样的,新来板子走的是rk809部分 然后我的编译方式里面没有,走的是别的方式,打印到log如下,然后就卡死 DDR V1.09 8fef64cfb9 wesley.yao 22/10/25-20:03:00 DDR4, 328MHz BW=16 Col=10 Bk=4 BG=2 CS0 Row=15 CS=1 Die BW=16 Size=512MB change to: 328MHz change to: 528MHz…

重要端口及服务速查

重要端口及服务 TCP/UDP端口列表K8s端口列表portservicedescription21ftp/tftp/vsftpd文件传输协议爆破/嗅探/溢出/后门22ssh远程连接爆破/openssh漏洞23telnet远程连接爆破/嗅探/弱口令25smtp邮件服务邮件伪造53dns域名解析系统域传送/劫持/缓存投毒/欺骗67/68dhcp服务劫持/欺…

微信小程序踩坑记录

一、引言 作者在开发微信小程序《目的地到了》的过程中遇到过许多问题&#xff0c;这里讲讲一些技术和经验问题。 基本目录机构&#xff1a; 二、问题 1、定位使用 获取定位一定要在app.json里面申明&#xff0c;不然是没办法获取定位信息的 "requiredPrivateInfos"…

【分享】Java Helper 与 Utility 类的区别

什么是Helper类&#xff1f; Helper类是一个包含一些常用方法或功能的类&#xff0c;用来辅助完成某个模块或任务的功能。它们通常不是直接提供业务功能的类&#xff0c;而是被其他类调用来完成一些特定的任务。Helper类的作用是提高代码的重用率、可维护性和可测试性&#xf…

Linux | Ubuntu设置 netstat(网络状态)

netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据&#xff0c;一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序&#xff0c;它能提供TCP连接&#xff0c;TCP和UDP监听&#xff0c;进程内存管理的相关报告。 1.netstat的安装 搜…