c++中#与##的作用

2023-05-16

1.c++中#用于把转换成字符串

#define T(A) A//没有使用#
using namespace std;
int main()
{
   cout<<"T(2): "<<T(2)<<endl;
   cout<<"T(10.5): "<<T(10.5)<<endl;
   cout<<"T(15.5f): "<<T(12.5f)<<endl;
   cout<<"T('d'): "<<T('d')<<endl;
   cout<<"T(hello): "<<T("hello")<<endl;
}

编译器只是单纯的把T(A)换成A

#define T(A) #A    //使用的# 编译器将以字符串的形式用A替换T(A)
using namespace std;
int main()
{
   cout<<"T(2): "<<T(2)<<endl;
   cout<<"T(10.5): "<<T(10.5)<<endl;
   cout<<"T(15.5f): "<<T(12.5f)<<endl;
   cout<<"T('d'): "<<T('d')<<endl;
   cout<<"T(hello): "<<T("hello")<<endl;
}

 

 在编译前编译器将在A换成"A"用来替换T(A)

1.2宏定义中字符串中#A '#A' 与"#A"的区别

using namespace std;
#define TEXT1(A) cout<<"This is #A"<<endl;
#define TEXT2(A) cout<<"This is '#A'"<<endl;//字符串中#A在''内
#define TEXT3(A) cout<<"This is "#A""<<endl;//字符串中#A在""内

int main()
{
   TEXT1("hello");
   TEXT2("hello");
   TEXT3("hello");
}

 可知宏定义当#A以字符串形式存在于字符串中可以达到以字符串形式输出

即#define TEXT(A) cout<<"This is "#A""<<endl;与#define TEXT(A) cout<<"This is "<<#A<<endl;是等价的

2 c++中的##可用于粘合宏参数 但粘合而成的关键字必须是合法的。举例

using namespace std;
#define TEXT(a)  a##cd
int main()
{
       cout<<TEXT(m)<<endl;
}
//会报错 粘合之后为mcd  而mcd我们没有定义并且c++也没有内置该标识符

//可以定义mcd 这样就不会报错了 如下
using namespace std;
#define TEXT(a)  a##cd
int main()
{
    int mcd = 100;
    cout<<TEXT(m)<<endl;
}
//会输出100;

当然 也可以粘合成c++中的内置标识符 如 cout可由c##out粘合而成

using namespace std;
#define TEXT(a)  a##out
int main()
{
    TEXT(c)<<"hello"<<endl;//c与out粘合成cout 
}

##也可用于粘合常量 但必须合法

#define TEXT(a,b)   a##b
int main()
{
    cout<<TEXT(123,456)<<endl;//输出123456
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c++中#与##的作用 的相关文章

  • Java自定义实现单链表

    目录 一 自定义java单链表原理概述 二 自定义java单链表功能实现细节 三 实现代码 一 自定义java单链表原理概述 1 单链表概念 单链表是一种链式存取的数据结构 xff0c 用一组地址任意的存储单元存放线性表中的数据元素 链表中
  • 树莓派上使用VSCode配置pyqt环境

    树莓派上在VSCode配置pyqt环境 第一次写博客 xff0c 这两天在树莓派上通过pyqt开发嵌入式软件 xff0c 本人一开始想用在windows上常用的pycharm配置pyqt xff0c 但是发现pycharm安装需要的java
  • postgres 错误duplicate key value violates unique constraint 解决方案

    SELECT setval 39 tablename id seq 39 SELECT MAX id FROM tablename 43 1 主要是 xff1a serial key其实是由sequence实现的 xff0c 当你手动给se
  • React 的生命周期

    挂载 当组件实例被创建并插入 DOM 中时 xff0c 其生命周期调用顺序如下 xff1a constructor 在 React 组件挂载之前 xff0c 会调用它的构造函数 getDerivedStateFromProps 在调用 re
  • Python去掉txt重复行

    coding utf 8 34 34 34 作者 xff1a sunli 日期 xff1a 2022年01月05日 34 34 34 coding utf 8 readDir 61 34 D1 txt 34 writeDir 61 34 D
  • 软件开发的四种模型

    1 gt 瀑布模型 xff1a xff08 1 瀑布模型的特点 xff1a 是线性模型的一种 xff0c 每一个阶段只执行一次 xff1b 这种模型是靠文档驱动的 xff08 2 瀑布模型的优缺点 优点 xff1a 开发的各个阶段比较清晰
  • IDEA 设置 背景 图片 详细步骤(结尾附高清背景图片)

    先上效果图 xff0c 原图在结尾 第一步 xff0c 找到搜索界面 xff0c 在搜索界面搜索 Set Background Image 之后 xff0c 找到想设置的图片的存储路径 接下来设置不透明度Opacity xff0c 越向右
  • Ubuntu 18.04下创建新用户/目录、修改用户权限及删除用户的方法

    Ubuntu 18 04下创建新用户 目录 修改用户权限及删除用户的方法 以下介绍在Ubuntu 18 04系统下创建新用户 目录 修改用户权限及删除用户的正确方法 在Ubuntu系统上创建新用户使用 sudo useradd 用户名 命令
  • 栈和队列练习题

    1 20分 回文序列是指正读反读均相同的字符序列 xff0c 如 abba 和 abdba 均是回文 xff0c 但 good 不是回文 试写一个算法判定给定的字符串是否为回文序列 span class token keyword int
  • mysql数据库忘记密码了怎么办

    本人用的mysql8版本 看到网上很多教程 xff0c 什么修改配置文件my ini 在8版本根本没用 以下是8版本解决办法 亲测可用 1 用管理员身份打开命令行工具 xff08 强调 xff1a 管理员身份 xff09 2 停止mysql
  • Java字符串匹配算法

    定义 串 string 是由零个或多个字符组成的有限序列又名叫字符串 一般地 xff0c 由n个字符串构成的串记作 S 61 a0a1 an 1 n 0 其中a i xff08 1 i n xff09 n是个有限的数值串一般记为S是串的名称
  • win10 vmvare打开虚拟机蓝屏重启,禁用device/credential guard 解决方法

    目录 解决方法在此 win10系统安装的vmware15一打开虚拟机就蓝屏重启 家人们我改了大半天 xff0c 试了友友们各种方法 xff0c 终于发现 xff0c 全都不好使 xff01 11 xff01 xff01 xff01 xff0
  • 数据结构算法设计题

    线性表 1 已知长度为n的线性表采用顺序存储结构 写一个算法 xff0c 删除线性表中所有值为x的元素 方法一 用k记录顺序表L中等于x的元素个数 xff0c 边扫描L边统计k 并将不等于x的元素前移k个位置 xff0c 最后修改L的长度
  • Elasticsearch Java API的基本使用

    说明 在明确了ES的基本概念和使用方法后 xff0c 我们来学习如何使用ES的Java API 本文假设你已经对ES的基本概念已经有了一个比较全面的认识 客户端 你可以用Java客户端做很多事情 xff1a 执行标准的index get d
  • lut调色预设怎么安装,LUT预设导入FCPX/PR/AE/PS/LR/达芬奇等软件教程

    lut调色预设怎么安装 xff0c LUT预设导入FCPX PR AE PS LR 达芬奇等软件教程 lut调色预设是一套深受设计师喜爱的调色软件 xff0c 通过使用LUT可以迅速达到很好的胶片质感和色彩 xff0c 在此基础上稍作调整即
  • macbook pro如何外接显示器?macbook 外接显示器教程

    13寸MacBook Pro屏幕是不是有点小了 xff1f 不知道你有没有萌生外接显示器的方法 xff01 接下来就为大家展示一下macbook pro如何外接显示器 xff01 先说说外接显示器有什么好处 1 拓展了工作空间 13寸的Ma
  • 腾讯视频 for Mac缓存的视频在哪?找不到腾讯视频缓存文件怎么办

    腾讯视频 for Mac提供丰富多彩的节目 xff0c 有时候我们会想要将缓存下来观看过的视频给删除 xff0c 但是根本找不到腾讯视频缓存文件 xff0c 那么我们要怎样才知道它的缓存路径呢 和小编一起来看看腾讯视频 for Mac缓存的
  • Mac OS小技巧:MAC电脑如何设置一键切换输入法

    我们在电脑上进行输入时经常会切换中英文输入不同的文字 xff0c 在windows系统上输入法切换直接按快捷键shift 43 ctrl就可以实现 xff0c 但是Mac系统的输入法设置与Windows系统的输入法设置不同 xff0c 但是
  • 全网最快的M1 MacBook Air详细测评

    简要总结这款 M1 MacBook Air xff1a 1 M1性能表现超出预期的好 xff0c 速度快到堪称恐怖 2 与Intel Mac一样功能强大 xff0c 甚至更强大 3 M1发热大幅降低 xff0c 续航大幅提升 4 兼容性不是
  • Mac技巧|如何阻止 iCloud 同步某个文件夹?

    使用 iCloud 的过程中 xff0c 难免遇到有些文件夹你不希望同步 比如游戏制作 xff0c 视频剪辑等的工程文件 xff0c iCloud 的持续同步机制会使得这些文件夹中的部分文件持续处于被上传且不可用状态 今天小编就给大家带来了

随机推荐

  • Mac技巧|如何阻止 iCloud 同步某个文件夹?

    使用 iCloud 的过程中 xff0c 难免遇到有些文件夹你不希望同步 比如游戏制作 xff0c 视频剪辑等的工程文件 xff0c iCloud 的持续同步机制会使得这些文件夹中的部分文件持续处于被上传且不可用状态 今天小编就给大家带来了
  • parallels desktop M1版安装Windows10教程

    近期有些朋友购入了新的M1 mac xff0c 可发现无法安装windows 现在 xff0c Parallels发布了与M1 Mac兼容的Parallels 16的技术预览版本 xff0c 可以安装ARM版本的win10 接下来 xff0
  • macOS怎样备份?备份Mac文件的最佳方法

    备份macOS绝不是一个坏主意 xff0c 您的机器可能会损坏 xff0c 故障或变得更糟 无论出现什么问题 xff0c 备份都可以帮助您恢复正常工作 如何使用Time Machine和iCloud备份Mac 要使用Time Machine
  • Office 2019 for Mac激活失败,显示未找到许可证怎么办?

    无法激活office 2019 xff1f office 2019激活后提示找不到许可证 xff1f 今日小编找到一个解决办法 xff1a 原来是在启动程序中注册了office的授权系统监控程序 com microsoft office l
  • Mac 外接显示器色彩不正常解决方案

    使用 MacBook和MacMini使用外接第三方非 Apple 认证的显示器会有色彩问题 xff0c 可能是显示器颜色整体发灰 xff0c 也有可能绿色特别绿 这是因为Apple封闭的系统识别的显示器较少 xff0c 第三方厂商也未很好的
  • mybatis-xml配置

    xff08 一 xff09 先配置datasource properties配置文件 xff1a xff08 此步可省略 xff09 jdbc driver 61 com mysql jdbc Driver jdbc url 61 jdbc
  • ArchiCAD 24 Mac版3D建筑模型设计和分析软件新功能介绍

    ArchiCAD 24 Mac破解版全新上线 xff0c 有哪些新增功能 xff1f 小编给大家带来了这篇ArchiCAD 24 Mac版3D建筑模型设计和分析软件新功能介绍的文章 xff0c 希望可以帮到你 设计 创建集成模型 使用Arc
  • MacBook不断重启的 5 个原因以及如何解决此问题

    您的 Mac 是否突然无故重启 xff1f 您外出回来时 xff0c 突然发现您的 Mac 正在神秘地关闭并重新启动 xff0c 这非常令人生气 如果重新启动问题变得更加严重 xff0c 您的 MacBook可能根本无法使用 小编将为您带来
  • 如何使用Super Vectorizer在Mac上快速矢量化图像?

    如何在 Mac 上将 PDF 转换为SVG矢量 xff1f 有需要的朋友快来跟小编看看具体做法吧 xff01 步骤 1 xff1a 在 Mac 上打开 Super Image Vectorizer 将图像文件导入 Super Vectori
  • Mac电脑怎么使用ping命令?

    电脑出问题了 xff0c 上不了网 xff0c 想排查下电脑的问题出在哪儿就需要用到ping xff0c 但是如果是Mac电脑该如何ping呢 xff1f 其实在Mac 自带的 终端 中使用ping命令 xff0c 下面小编教你如何在Mac
  • 安装VMware Workstation Pro 16 教程,Ubuntu 18 桌面版安装教程

    目录 1 VMware Workstation 16 Pro 安装教程 2 Ubuntu 18 桌面版安装教程 1 VMware Workstation 16 Pro 安装教程 1 第一步 xff1a 到官网进行下载软件 xff0c 下载
  • STM32 创建LED工程,点亮LED

    容忍5V电压 FT 61 FIve Tolerate 允许5V 寄存器就是特殊的存储器 上拉输入和下拉输入 如果输入啥都不接 xff0c IO口输入电平极容易受外部电平干扰 xff0c 加上拉电阻就是为了保护输入引脚的电平 为了避免引脚悬空
  • C语言枚举使用技巧

    什么是C语言枚举 C语言枚举是一种用户自定义数据类型 xff0c 它允许程序员定义一个变量 xff0c 并将其限制为一组预定义的常量 这些常量被称为 枚举值 xff0c 并且可以通过名称进行引用 在C语言中 xff0c 枚举值是整数类型 x
  • 关于win10系统打开VMware虚拟机蓝屏的解决方案

    先说结论 xff1a 不要急着更改系统配置甚至重装系统 xff0c 首先检查自己的VMware版本 xff0c 如果为16 1或以前 xff0c 请将原先的版本升级为VMware17 0版本 xff01 xff01 xff01 本人当前电脑
  • 洛谷P1025

    这道题类似于把n个苹果放到k个盘子里且不能空盘子的问题 递归 xff08 dfs xff09 做法 include lt bits stdc 43 43 h gt define LL long long using namespace st
  • windows权限维持之shift后门

    原理 xff1a 沾滞键的目的是为了帮助那些按键有困难的人设计的 xff0c 在Windows系统下连续按5次shift键后 xff0c 系统就会执行C Windows System32下的sethc exe xff0c 也就是启用了沾滞键
  • PostgreSQL数据库smallint、bigint转到Oracle,要用什么类型替代? 是number么,那长度分别是多少?...

    个人意见 xff0c 仅供参考 xff1a smallint是有符号或无符号2字节的整数 xff0c 范围是0 xff5e 65 536 xff0c 5位整数 bigint是有符号或无符号8字节的整数 xff0c 范围是0 xff5e 18
  • 网络安全计算机基础

    计算机网络概念 xff1a 实际上是将分布在不同地理位置 xff0c 且具有独立功能的计算机 通过通信链路以及通信设备 xff0c 在网络操作系统 xff0c 网络管理软件及网络通信协议的管理和协调下实现信息传输与资源共享形成的计算机系统
  • ImportError:No module named ‘PIL‘

    运行时报错 xff1a ImportError No module named 39 PIL 原因是缺失一个pillow的数据包 xff0c 不能直接 pip install PIL xff0c 会提示找不到这个安装包 xff0c 需使用如
  • c++中#与##的作用

    1 c 43 43 中 用于把转换成字符串 define T A A 没有使用 using namespace std int main cout lt lt 34 T 2 34 lt lt T 2 lt lt endl cout lt l