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

C/C++转换为字符串宏和字符串拼接宏的综合使用

本文内容参考:

C/C++ 宏拼接和宏展开为字符串 - DoubleLi - 博客园

特此致谢!

1. 转换为字符串宏与字符串拼接宏

(1)转换为字符串宏

转换为字符串的宏为:

#define STR(x) #x //转字符串

(2)字符串拼接宏

字符串拼接的宏为:

#define CONCAT(x,y) x##y //拼接

2. 两种宏结合使用出现的问题

以上两种宏定义在开发中是很常见的。但是,当将两者结合起来使用,单纯(同时)使用上边的宏就不行了。例如以下几种情况。

(1)第一种情况

代码如下:

#include <stdio.h>#define STR(x)  #x
#define CONCAT(a, b)    a##bint main(void)
{printf("STR(aaa) is: %s\n", STR(aaa));printf("STR(111) is: %s\n", STR(111));printf(STR(CONCAT(aaa, 111)));return 0;
}

运行结果如下:

以上代码的本意是让aaa和111先进行拼接,拼接为aaa111,然后再转换为字符串,即"aaa111"。但是实际的结果却是输出了"CONCAT(aaa, 111)",即并没有先将CONCAT宏展开,而是直接使用了。这是第一种情况。

(2)第二种情况

仍然使用以上代码,只是稍作修改:

#include <s

相关文章:

C/C++转换为字符串宏和字符串拼接宏的综合使用

本文内容参考: C/C++ 宏拼接和宏展开为字符串 - DoubleLi - 博客园 特此致谢! 1. 转换为字符串宏与字符串拼接宏 (1)转换为字符串宏 转换为字符串的宏为: #define STR(x) #x //转字符串 (2)字符串拼接宏 字符串拼接的宏为: #define CONCAT(x,y) x##y //拼接 2…...

Linux:xxx is not in the sudoers file. This incident will be reported.

报错 xxx is not in the sudoers file. This incident will be reported.解决方式 切换到root用户下操作 # 1、修改/etc/sudoers文件为可修改&#xff0c;默认是只读的 ls -lh /etc/sudoers -r--r----- 1 root root 4.3K Dec 1 01:45 /etc/sudoerschmod uw /etc/sudoersls…...

掌握新编程语言的秘诀:利用 AI 快速上手 Python、Go、Java 和 Rust

网罗开发 &#xff08;小红书、快手、视频号同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…...

个人常用的chrome好用插件

chrome可以说是兼容性和实用性较高的浏览器 没有复杂的ui 沉重的广告 加上各种各样的浏览器插件 现在罗列一下个人常用的几款好用的插件 1. Adblock Plus 一款免费的广告拦截器&#xff0c;可以拦截大部分网站上的广告推荐&#xff0c;还你一个干净舒服的页面 以下为b站演示…...

Redis 内存优化

Redis 内存优化 Redis性能优化可以从多个方面进行&#xff0c;主要包括以下几个方面&#xff1a; 1. 内存优化 Redis 是基于内存的数据库&#xff0c;优化内存使用可以提高性能并降低成本。 (1) 使用合适的数据结构 不同的数据结构占用的内存不同&#xff0c;选择合适的数据…...

数据库设计-笔记2

1.介绍一下MySQL 历史与发展 MySQL 最初由瑞典的 MySQL AB 公司开发&#xff0c;于 1995 年正式发布。2008 年&#xff0c;MySQL AB 公司被 Sun Microsystems 收购&#xff0c;之后 Sun 又被甲骨文&#xff08;Oracle&#xff09;公司收购&#xff0c;MySQL 成为 Oracle 旗下…...

【大模型】什么是循环神经网络(RNNs)

在人工智能&#xff08;AI&#xff09;的世界里&#xff0c;**循环神经网络&#xff08;Recurrent Neural Networks, RNNs&#xff09;**是一种非常强大的工具&#xff0c;特别适合处理序列数据。无论是语言、时间序列还是音乐&#xff0c;RNNs都能帮助我们理解和预测这些数据的…...

hexo+butterfly搭建博客网站总结篇

hexobutterfly搭建博客网站总结篇 文章目录 hexobutterfly搭建博客网站总结篇0.往期栏目1.发现的不错的butterfly博主2.待实现的功能 && 结语笔者待实现的功能结语 0.往期栏目 个人博客网站搭建_为了前进而后退&#xff0c;为了走直路而走弯路的博客-CSDN博客 【Node…...

损失函数理解(二)——交叉熵损失

损失函数的目的是为了定量描述不同模型&#xff08;例如神经网络模型和人脑模型&#xff09;的差异。 交叉熵&#xff0c;顾名思义&#xff0c;与熵有关&#xff0c;先把模型换成熵这么一个数值&#xff0c;然后用这个数值比较不同模型之间的差异。 为什么要做这一步转换&…...

基于随机森林回归预测葡萄酒质量

基于随机森林回归预测葡萄酒质量 1.作者介绍2.随机森林算法与数据集介绍2.1定义2.2核心思想2.3主要步骤2.4数据集介绍 3.算法实现3.1数据加载与探索3.2数据可视化3.3数据预处理&#xff08;标准化、划分训练/测试集&#xff09;3.4模型训练与优化&#xff08;随机森林回归 超参…...

【Qt】QWidget属性2

&#x1f3e0;个人主页&#xff1a;Yui_ &#x1f351;操作环境&#xff1a;Qt Creator &#x1f680;所属专栏&#xff1a;Qt 文章目录 1. windowOpacity属性2. cursor属性2.1 自定义光标 3. font属性4.tooltip属性5. focusPolicy属性6. 总结 由于QWidget的常见属性实在太多&a…...

OpenGL ES ->乒乓缓冲,计算只用两个帧缓冲对象(Frame Buffer Object)+叠加多个滤镜作用后的Bitmap

乒乓缓冲核心思想 不使用乒乓缓冲&#xff0c;如果要每个滤镜作用下的绘制内容&#xff0c;也就是这个滤镜作用下的帧缓冲&#xff0c;需要创建一个Frame Buffer Object加上对应的Frame Buffer Object Texture使用乒乓缓冲&#xff0c;只用两个Frame Buffer Object加上对应的F…...

数据库练习2

目录 1.向heros表中新增一列信息&#xff0c;添加一些约束&#xff0c;并尝试查询一些信息 2.课堂代码练习 3.题目如下 一、单表查询 1、显示所有职工的基本信息。 2、查询所有职工所属部门的部门号&#xff0c;不显示重复的部门号。 3、求出所有职工的人数。 4…...

macOS Sequoia 15.3 一直弹出“xx正在访问你的屏幕”

&#x1f645; 问题描述 macOS 系统升级后&#xff08;15.2或者15.3均出现过此问题&#xff09;&#xff0c;不管是截图还是开腾讯会议&#xff0c;只要跟捕捉屏幕有关&#xff0c;都一直弹出这个选项&#xff0c;而且所有软件我都允许访问屏幕了&#xff0c;这个不是询问是否…...

OpenCV图像拼接(1)自动校准之校准旋转相机的函数calibrateRotatingCamera()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::detail::calibrateRotatingCamera 是OpenCV中用于校准旋转相机的函数。它特别适用于那种相机相对于一个固定的场景进行纯旋转运动的情况&…...

Conda常用命令汇总(持续更新中)

原文章&#xff1a;安装和使用Miniconda来管理Python环境-CSDN博客 一、Miniconda的使用 Miniconda没有GUI界面&#xff0c;只能通过conda命令对Python环境和软件包进行管理&#xff0c;所以这里主要介绍一下conda的常用命令。 1. Conda相关 (1)查询conda版本 conda --vers…...

C# 调用 VITS,推理模型 将文字转wav音频调试 -数字人分支

Microsoft.ML.OnnxRuntime.OnnxRuntimeException: [ErrorCode:InvalidArgument] Input name: input_name is not in the metadata在 Microsoft.ML.OnnxRuntime.InferenceSession.LookupInputMetadata(String nodeName) 位置 D:\a\_work\1\s\csharp\src\Microsoft.ML.OnnxRuntim…...

Java锁等待唤醒机制

在 Java 并发编程中&#xff0c;锁的等待和唤醒机制至关重要&#xff0c;通常使用 wait()、notify() 和 notifyAll() 来实现线程间的协调。本文将详细介绍这些方法的用法&#xff0c;并通过示例代码加以说明。 1. wait()、notify() 与 notifyAll() 在 Java 中&#xff0c;Obj…...

Docker Compose 常用命令详解

Docker Compose 常用命令详解 Docker Compose 是 Docker 官方提供的一个用于管理多个容器的工具&#xff0c;可以使用 docker-compose.yml 文件定义和运行多容器应用。本篇博客将详细介绍 Docker Compose 的常用命令&#xff0c;帮助你更高效地管理容器。 1. docker compose u…...

C站算法技能题-题解(javascript)

切面条 const 切面条 (n10)>{return 2 ** n 1; } 切面条(0) 2 切面条(1) 3 切面条(2) 5 切面条(10) 1025大衍数列 const 大衍数列 (n100) > {let ans []for(let i1;i<n;i){if(i%2 0){ans.push((i ** 2 ) / 2)}else{ans.push((i ** 2 - 1) / 2)}}return ans…...

【Docker系列一】Docker 简介

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

C++进阶——封装红黑树实现map和set

目录 1、源码及框架分析 2、模拟实现map和set 2.1 复用的红黑树框架及Insert 2.2 iterator的实现 2.2.1 iterator的核心源码 2.2.2 iterator的实现思路 2.3 map支持[ ] 2.4 map和set的代码实现 2.4.1 MyMap.h 2.4.2 MySet.h 2.4.3 RBTree.h 2.4.4 Test.cpp 1、源码及…...

python基础-02-列表+序列数据类型

文章目录 【README】【4】python列表【4.1】列表数据类型【4.1.1】用索引取得列表中的单个值【4.1.2】负数索引【4.1.3】利用切片获取子列表【4.1.4】用索引改变列表中的值【4.1.5】列表连接与复制【4.1.6】del语句删除列表中的元素 【4.2】使用列表【4.2.1】列表用于循环【补充…...

‘闭包‘, ‘装饰器‘及其应用场景

‘闭包’, 装饰器’及其应用场景 一, 闭包及其应用场景 图解 闭包的定义 概述: 内部函数 使用了 外部函数 的变量, 这种写法就称之为闭包. 格式: def 外部函数名(形参列表):外部函数的(局部)变量def 内部函数名(形参列表):内部函数的(局部)变量return 内部函数名前提条件: …...

IDEA 快捷键ctrl+shift+f 无法全局搜索内容的问题及解决办法

本篇文章主要讲解IDEA、phpStrom、webStrom、pyCharm等jetbrains系列编辑器无法进行全局搜索内容问题的主要原因及解决办法。 日期&#xff1a;2025年3月22日 作者&#xff1a;任聪聪 现象描述&#xff1a; 1.按下ctrlshiftf 输入法转为了繁体。 2.快捷键ctrlshiftr 可以全局检…...

Java——Random库

一、作用 Random库——生成随机数 二、实现步骤 1.导包&#xff1a;import java.util.Random; #快捷键&#xff1a;“Random”回车键 2.取得随机数&#xff1a;Random 变量1 new Random(); 3.调用随机数&#xff1a;类型 变量2 变量1.nextInt(n); &#xff08;代表变量…...

【通过Groovy去热修复线上逻辑】1.执行线上数据修复 2.写工具

1.执行groovy // 实际执行的话, 我们是通过vue提交的 http://localhost:8080/groovy/execute?scriptimport com.example.groovytest.controller.LoginController; LoginController.num251222 还有个技巧: 而执行执行的&#xff0c;则是: 写的工具什么的&#xff0c;想直接使…...

Powershell WSL导出导入ubuntu22.04.5子系统

导出Linux子系统 导出位置在C盘下,根据自己的实际情况更改即可Write-Host "export ubuntu22.04.5" -ForegroundColor Green wsl --export Ubuntu-22.04 c:\Ubuntu-22.04.tar 导入Linux子系统 好处是目录可用在任意磁盘路径,便于迁移不同的设备之间Write-Host &quo…...

【005安卓开发方案调研】之Flutter+Dart技术开发安卓

基于2025年国内移动开发环境现状&#xff0c;结合多份行业分析报告和技术文档&#xff0c;对FlutterDart开发安卓应用的技术成熟度和生态适配性分析如下&#xff1a; 一、技术成熟度评估 1. 跨平台能力达到生产级标准 Flutter的Skia自渲染引擎和Dart的AOT/JIT双编译模式&…...

论文笔记(七十三)Gemini Robotics: Bringing AI into the Physical World

Gemini Robotics: Bringing AI into the Physical World 文章概括1. 引言2. Gemini 2.0的具身推理2.1. 具身推理问答&#xff08;ERQA&#xff09;基准测试2.2. Gemini 2.0的具身推理能力2.3. Gemini 2.0支持零样本和少样本机器人控制 3. 使用 Gemini Robotics 执行机器人动作3…...