首页 > 编程语言 >C++学习,# 和 ## 运算符

C++学习,# 和 ## 运算符

时间:2024-09-26 15:50:10浏览次数:8  
标签:## C++ 运算符 int 参数 字符串 标识符

C++中,# 和 ## 是两个特殊的预处理运算符,它们主要在宏定义中使用,用于字符串化和标记粘贴(token pasting)操作。

 

# 运算符:字符串化

# 运算符用于将其后的宏参数转换为一个字符串常量。如果宏参数是一个宏标识符,则它会被转换成用双引号括起来的该标识符的字符串表示。这个操作在需要将宏参数作为字符串处理时非常有用。

示例:

#define STRINGIFY(x) #x    
int main() {  
    const char* str = STRINGIFY(hello world); // str 将会是 "hello world"  
    return 0;  
}

 

## 运算符:标记粘贴

## 运算符用于在宏扩展时连接两个标记(token)。如果两个宏参数之间放置了 ## 运算符,那么这两个参数在宏扩展时会被合并成一个标记。这个操作在需要根据宏参数动态生成标识符时非常有用。

示例:

#include <iostream>
using namespace std;
 
#define concat(a, b) a ## b
int main()
{
   int xy = 100;   
   cout << concat(x, y);
   return 0;
}

 

注意事项

  • # 和 ## 运算符只能在宏定义中使用。
  • 使用 ## 运算符时,如果任一操作数在宏扩展后为空,则行为是未定义的。
  • # 运算符生成的字符串不包括任何周围的引号,但它确实会生成一个字符串字面量。
  • 这两个运算符是预处理指令的一部分,它们在编译之前由预处理器处理。

 

标签:##,C++,运算符,int,参数,字符串,标识符
From: https://blog.csdn.net/xuann/article/details/142502341

相关文章

  • BladeX开发入门(记录)
    BladeX物联网平台是一款高度集成的物联网解决方案,涵盖设备管理、数据采集、实时监控、数据分析以及开放API服务等核心功能。平台经过精心设计与开发,提供了全面的品类、产品和设备支持。设备注册成功后,能够轻松桥接至其他物联网云平台,实现设备的无缝集成。同时提供服务端订阅功......
  • 2024年自动化、电气控制系统与设备国际学术会议(AECSE 2024) 2024 International Confer
    文章目录一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题六、咨询一、会议详情二、重要信息大会官网:https://ais.cn/u/vEbMBz提交检索:EICompendex、IEEEXplore、Scopus2024年10月18-20日,南京三、大会介绍2024年自动化、电气控制系统与设备国际......
  • 131.分割回文串
    点击查看代码funcpartition(sstring)[][]string{//1.判断0值输入ifs==""{return[][]string{}}res:=[][]string{}path:=[]string{}//调用回溯函数backtracking(s,0,&res,path)returnres}funcbacktrac......
  • # 使用VBA删除Word文档最后一页的空白页
    使用VBA删除Word文档最后一页的空白页本教程将指导您如何使用VBA(VisualBasicforApplications)删除MicrosoftWord文档最后一页的空白页。详细代码使用流程参照上一篇博客增加空白页,替换代码部分即可步骤打开Word文档打开包含要删除的空白页的Word文档。打开Visual......
  • Git 基本操作
    目录一、基本概念1、工作区域2、文件状态二、基本使用1、设置用户标识2、初始化仓库3、提交文件到暂存区4、提交到本地库5、推送到远程仓库5.1错误说明6、克隆三、分支操作1、查看分支2、创建分支3、切换分支4、合并分支5、删除分支6、上传分支四、替换本地改动五、......
  • Java单体服务和集群分布式SpringCloud微服务的理解
    单体应用存在的问题1.随着业务的发展开发变得越来越复杂。2.修改或者新增,需要对整个系统进行测试、重新部署。3.一个模块出现问题,很可能导致整个系统崩溃。4.多个开发团队同时对数据进行管理,容易产生安全漏洞。5.各个模块使用同一种技术进行开发,各个模块很难根据实际情况......
  • 一个基于Transformer模型的中文问答系统926.1
    这个代码实现了一个基于Transformer模型的中文问答系统。以下是代码的主要功能和可能的完善方向:主要功能数据处理:代码首先定义了处理中文文本的函数,包括分词、构建词汇表、将句子转换为张量等。数据加载:从.jsonl或.json文件中加载问题和答案数据,并进行数据增强。模型定......
  • ARM 服务器上安装 OpenEuler (欧拉)
    系统介绍在2019年7月19日,华为宣布要在年底正式开源openEuler操作系统;在半年后的12月31日,华为正式开源了openEuler操作系统,邀请社区开发者共同来贡献。一年后,截止到2020年12月25日,openEuler已经拥有了3万社区用户,2万多个合入的拉取请求(PullRequest),2......
  • 2023.9.25 近期练习
    CF1261FXor-Set我们把\(A,B\)集合分别处理,把其拥有的区间放到字典树上,就会拆成\(O(n\logV)\)个区间。考虑其两两组合,每个区间都是形如前面若干位确定,后面\(x\)位任意。两个区间组合,就是取\(x\)更大的那个后面都是任意的,前面的若干位合并起来即可。但是这样就会有\(......
  • 外包干了10个月,技术退步明显.......
    先说一下自己的情况,大专生,18年通过校招进入武汉某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试,已经让我变得不思进取,谈了2年的女朋友也因为我的心态和工资和我分手了。于......