当前位置: 首页 > news >正文

宏定义中 ## 和 # 的作用

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"

相关文章:

  • 中国信息通信研究院产业与规划研究所校招一面、二面内容
  • ChatGPT生成的一些有趣的文件管理用python小程序
  • Vue框架学习笔记——计算属性
  • 数据结构 | 二叉树的概念及前中后序遍历
  • 鸿蒙开发学习——应用程序框架
  • 增强静态数据的安全性
  • Java实现通过经纬度求两个任意地点在球面上的距离
  • java开发之个微群聊自动添加好友
  • 装饰者设计模式
  • vue3中的动态component组件
  • 前端命名规范总结
  • linaro交叉编译工具链下载与使用笔记
  • 量子计算的世界:探索叠加态与Python编程
  • C语言——数组转换
  • Zabbix“专家坐诊”第212期问答汇总
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Apache的基本使用
  • Electron入门介绍
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Redis 懒删除(lazy free)简史
  • spark本地环境的搭建到运行第一个spark程序
  • webpack入门学习手记(二)
  • 回顾2016
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 详解NodeJs流之一
  • 再次简单明了总结flex布局,一看就懂...
  • 在Mac OS X上安装 Ruby运行环境
  • 《天龙八部3D》Unity技术方案揭秘
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)php新闻发布平台 毕业设计 141646
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (转)ORM
  • (转)visual stdio 书签功能介绍
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .htaccess配置重写url引擎
  • .net 8 发布了,试下微软最近强推的MAUI
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .net2005怎么读string形的xml,不是xml文件。
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET企业级应用架构设计系列之开场白
  • @AliasFor注解
  • @Autowired和@Resource装配
  • [ACM] hdu 1201 18岁生日
  • [Ariticle] 厚黑之道 一 小狐狸听故事
  • [FZSZOJ 1223] 上海红茶馆