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

C++ 宏定义中的##

一、解释

        C++的宏定义中的##,代表将内容先分隔,再强制连接

二、举例

        假设有如下宏定义:

#define DECLARE(name, type) type name##_##type##_typevoid decl() {DECLARE(val, int); //语句1
}

         则语句1替换为:int val_int_type

由于##的存在,type name##_##type##_type 可以被分隔为以下五部分:

                                        typename_type_type

因此,只替换参数中为type和name的部分,替换后为:

                                       intval_int_type

再组合为:int val_int_type

相关文章:

  • 【JavaEE】Servlet
  • MFC:初步理解序列化与反序列化(含代码实现)
  • 【机器学习】之 K-最近邻(KNN)算法原理及实现
  • 【JAVA WEB实用与优化技巧】如何使用本地.bat/.sh脚本快速将服务发布到测试环境?
  • NVIDIA发布重磅AI创新,黄仁勋在COMPUTEX大会预示计算未来
  • 面向对象程序设计之从C到C++的初步了解
  • 奶茶店、女装店、餐饮店是高危创业方向,原因如下:
  • 一个知识问答系统,用户的选择决定接下来出现的问题,且下一个问题的呈现取决于前面几个问题的回答
  • 工业4.0利器:MES系统
  • 在一个定义好的数据对象(class)中,后续更新时只更新其中部分数据,其余部分会恢复初始设置吗
  • Amazon云计算AWS(四)
  • typescript --object对象类型
  • 开发和渗透偷懒利器utools
  • 鲁教版七年级数学下册-笔记
  • OCR图片转Excel表格:没结构化的弊端
  • 2017年终总结、随想
  • angular2 简述
  • Apache的基本使用
  • JavaScript异步流程控制的前世今生
  • leetcode388. Longest Absolute File Path
  • vue--为什么data属性必须是一个函数
  • webgl (原生)基础入门指南【一】
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • Zepto.js源码学习之二
  • 初识MongoDB分片
  • 浮动相关
  • 汉诺塔算法
  • 简析gRPC client 连接管理
  • 你真的知道 == 和 equals 的区别吗?
  • 前端面试题总结
  • 前端性能优化——回流与重绘
  • 手写双向链表LinkedList的几个常用功能
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 我从编程教室毕业
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • # Apache SeaTunnel 究竟是什么?
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #define
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (四)Android布局类型(线性布局LinearLayout)
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)jdk与jre的区别
  • (转)shell调试方法
  • (转)创业家杂志:UCWEB天使第一步
  • .JPG图片,各种压缩率下的文件尺寸
  • .mysql secret在哪_MySQL如何使用索引
  • .Net OpenCVSharp生成灰度图和二值图
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET开发不可不知、不可不用的辅助类(一)
  • .net网站发布-允许更新此预编译站点
  • .project文件