可变参数宏中标记的串联

2023-12-12

在 C 中,是否可以将可变参数连接到可变参数宏中?

例子:

MY_MACRO(A, B, C) // will yield HDR_A, HDR_B, HDR_C
MY_MACRO(X, Y)    // will yield HDR_X, HDR_Y

正常的##运算符对于可变参数宏具有特殊含义(避免空参数列表中的逗号)。与 一起使用时连接__VA_ARGS__仅使用第一个令牌进行。

例子:

#define MY_MACRO(...) HDR_ ## __VA_ARGS__

MY_MACRO(X, Y)    // yields HDR_X, Y

建议?


首先,您提到的逗号规则是 gcc 扩展,标准 C 没有它,而且很可能永远不会有它,因为该功能可以通过不同的方式实现。

您正在寻找的是使用宏进行元编程,这是可能的,但您需要一些技巧来实现这一点。P99为您提供以下工具:

#define MY_PREFIX(NAME, X, I) P99_PASTE2(NAME, X)
#define MY_MACRO(...) P99_FOR(HDR_, P99_NARG(__VA_ARGS__), P00_SEQ, MY_PREFIX, __VA_ARGS__)
  • Here MY_PREFIX描述必须对个人做什么 项目。
  • P00_SEQ声明如何分隔项目
  • P99_NARGS只计算参数的数量
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可变参数宏中标记的串联 的相关文章

  • 如何检查图像对象与资源中的图像对象是否相同?

    所以我试图创建一个简单的程序 只需在单击图片框中更改图片即可 我目前只使用两张图片 所以我的图片框单击事件函数的代码 看起来像这样 private void pictureBox1 Click object sender EventArgs
  • 当我使用“control-c”关闭发送对等方的套接字时,为什么接收对等方的套接字不断接收“”

    我是套接字编程的新手 我知道使用 control c 关闭套接字是一个坏习惯 但是为什么在我使用 control c 关闭发送进程后 接收方上的套接字不断接收 在 control c 退出进程后 发送方的套接字不应该关闭吗 谢谢 我知道使用
  • 从父类调用子类方法

    a doStuff 方法是否可以在不编辑 A 类的情况下打印 B did stuff 如果是这样 我该怎么做 class Program static void Main string args A a new A B b new B a
  • C++ 子字符串返回错误结果

    我有这个字符串 std string date 20121020 我正在做 std cout lt lt Date lt lt date lt lt n std cout lt lt Year lt lt date substr 0 4 l
  • 实时服务器上的 woff 字体 MIME 类型错误

    我有一个 asp net MVC 4 网站 我在其中使用 woff 字体 在 VS IIS 上运行时一切正常 然而 当我将 pate 上传到 1and1 托管 实时服务器 时 我得到以下信息 网络错误 404 未找到 http www co
  • WPF 中的调度程序和异步等待

    我正在尝试学习 WPF C 中的异步编程 但我陷入了异步编程和使用调度程序的困境 它们是不同的还是在相同的场景中使用 我愿意简短地回答这个问题 以免含糊不清 因为我知道我混淆了 WPF 中的概念和函数 但还不足以在功能上正确使用它 我在这里
  • C - 找到极限之间的所有友好数字

    首先是定义 一对友好的数字由两个不同的整数组成 其中 第一个整数的除数之和等于第二个整数 并且 第二个整数的除数之和等于第一个整数 完美数是等于其自身约数之和的数 我想做的是制作一个程序 询问用户一个下限和一个上限 然后向他 她提供这两个限
  • 获取没有非标准端口的原始 url (C#)

    第一个问题 环境 MVC C AppHarbor Problem 我正在调用 openid 提供商 并根据域生成绝对回调 url 在我的本地机器上 如果我点击的话 效果很好http localhost 12345 login Request
  • 使用 System.Text.Json 即时格式化 JSON 流

    我有一个未缩进的 Json 字符串 例如 hash 123 id 456 我想缩进字符串并将其序列化为 JSON 文件 天真地 我可以使用缩进字符串Newtonsoft如下 using Newtonsoft Json Linq JToken
  • 如何衡量两个字符串之间的相似度? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给定两个字符串text1 and text2 public SOMEUSABLERETURNTYPE Compare string t
  • 如何将单个 char 转换为 int [重复]

    这个问题在这里已经有答案了 我有一串数字 例如 123456789 我需要提取它们中的每一个以在计算中使用它们 我当然可以通过索引访问每个字符 但是如何将其转换为 int 我研究过 atoi 但它需要一个字符串作为参数 因此 我必须将每个字
  • 如何使我的表单标题栏遵循 Windows 深色主题?

    我已经下载了Windows 10更新包括黑暗主题 文件资源管理器等都是深色主题 但是当我创建自己的 C 表单应用程序时 标题栏是亮白色的 如何使我自己的桌面应用程序遵循我在 Windows 中设置的深色主题 你需要调用DwmSetWindo
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的
  • 如何使用 std::string 将所有出现的一个字符替换为两个字符?

    有没有一种简单的方法来替换所有出现的 in a std string with 转义 a 中的所有斜杠std string 完成此操作的最简单方法可能是boost字符串算法库 http www boost org doc libs 1 46
  • C 中的异或运算符

    在进行按位操作时 我在确定何时使用 XOR 运算符时遇到一些困难 按位与和或非常简单 当您想要屏蔽位时 请使用按位 AND 常见用例是 IP 寻址和子网掩码 当您想要打开位时 请使用包含或 然而 XOR 总是让我明白 我觉得如果在面试中被问
  • 如何在 C++ BOOST 中像图形一样加载 TIFF 图像

    我想要加载一个 tiff 图像 带有带有浮点值的像素的 GEOTIFF 例如 boost C 中的图形 我是 C 的新手 我的目标是使用从源 A 到目标 B 的双向 Dijkstra 来获得更高的性能 Boost GIL load tiif
  • 防止索引超出范围错误

    我想编写对某些条件的检查 而不必使用 try catch 并且我想避免出现 Index Out of Range 错误的可能性 if array Element 0 Object Length gt 0 array Element 1 Ob
  • 使用 libcurl 检查 SFTP 站点上是否存在文件

    我使用 C 和 libcurl 进行 SFTP FTPS 传输 在上传文件之前 我需要检查文件是否存在而不实际下载它 如果该文件不存在 我会遇到以下问题 set up curlhandle for the public private ke
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我

随机推荐

  • 向 VBA HTTP Post 请求添加参数

    我想从网络服务请求令牌 它要求我使用授权代码发出 HTTP POST 请求 我需要在我的请求中包含此代码以及其他参数 我在网上找到的任何详细信息都将 Java 中的请求格式化如下 所有 ID 都是伪造的 POST services oaut
  • JavaScript生成不重复的随机数

    我有一些代码 其中有 x 个项目的数组 在这种情况下 视频 我想随机调用一个视频 但是如果当前已调用的视频与随机数相同 我希望它生成另一个随机数 直到它是唯一的 这是我的代码 var videoLinks
  • 当我使用 RecyclerView 和 SwipeRefreshLayout 在 MotionLayout 中做一些动画时,事情变得很奇怪

    当 RecyclerView 向上拖动时 我使用 MotionLayout 来实现一些很酷的效果 但看起来当我想将 SwipeRefreshLayout 与 RecyclerView 一起使用时 事情会发生冲突 如果没有 SwipeRefr
  • Podio:设置 DateTime 字段值时使用哪个时区

    使用 Podio API 创建新项目或更新现有项目时 并将 DateTime 字段值设置为 2016 10 21 14 15 00 例如 哪个时区将用于存储此日期时间 E g request app id
  • CSS :checked - 更改 背景

    使用CSS 是否可以改变background color整个的 tr 基于是否 tr
  • iOS - swift 3 - DispatchGroup

    我创建了这个基本架构来处理我的网络事务 我想保持它的模块化和结构化 public class NetworkManager public private set var queue DispatchQueue DispatchQueue l
  • openfire 支持用户/联系人阻止吗?

    openfire 支持用户 联系人阻止吗 我正在创建一个基于 XMPP 的聊天 现在我希望我的用户拥有一个可以主动阻止某个人与他们聊天的工具 我知道 XMPP 已经定义了一个扩展 通信阻止 在隐私列表 XEP 0016 中定义 以及隐私列表
  • JdbcPagingItemReader 不适用于联接查询

    我有两个表表 1 和表 2 两者具有相同的名称id column 由于它是左外连接查询 因此我必须使用别名 在 sortKeys 中 如果我提到id 误差为 Caused by org postgresql util PSQLExcepti
  • 如何在不使用 Javascript 的情况下防止 .NET MVC 中的多个表单提交?

    我想防止用户在 NET MVC 中多次提交表单 我已经尝试了几种使用 Javascript 的方法 但很难让它在所有浏览器中工作 那么 如何在我的控制器中防止这种情况发生呢 是否有某种方法可以检测到多次提交 更新了 ASP NET Core
  • R Leaflet 离线地图图块未加载

    我需要帮助尝试找出为什么使用本地保存的地图图块的传单地图无法正常工作 我正在尝试重新创建示例here根据本地保存的地图图块创建传单地图 但是 当我创建它时 背景地图图块不会加载 我的代码基本上直接来自示例 但针对我的目录进行了更新 并更新以
  • Objective-C 构建中出现重复符号错误?

    当我按构建 调试时出现此错误 ld duplicate symbol objc class name BlogTableItemCell in Users fabian Development Workspaces iphone exper
  • 在 TBIMP 编辑的 dll 之后手动生成 ActiveX 包装器?

    我有几个需要从 C 项目访问的 ActiveX 组件 我可以通过 Visual Studio 的添加引用对话框导入它们 该对话框还将自动生成包装类 IE ABCLib and AxABCLib 我知道我可以通过运行手动生成主互操作程序集TL
  • C#:如何使用 IReadOnly 字典实现接口,其中包含来自包含具体值的具体字典的接口值

    在我的代码中 我声明内部类和公共接口 并且有一种情况 我想公开一个带有包含接口类型值的 IReadonlyDictionary 的接口 但我想用具有带有值的 Dictionary 的类来实现它具体类型 我需要这个 因为我正在将一些 JSON
  • 迁移到 Team Foundation Server

    我们有一台安装了 TFS 的新服务器 当前的环境非常平常 源代码使用SourceSafe 2005 进行管理 并与Visual Studio 2008 企业版集成 QA 团队正在使用 Bugzilla 来报告错误 首先是一些基本问题 我怎样
  • 使用 softmax 激活的二元分类始终输出 1

    对于问题的质量感到抱歉 但这里是初学者 我只是想用泰坦尼克号数据集试试运气 但它总是预测乘客死亡 我尝试解释下面的代码 import matplotlib pyplot as plt import numpy as np import pa
  • 如何在同一个类的另一个方法中调用一个方法的变量

    我正在尝试访问同一类的另一个方法中的方法的变量 但由于某种原因它什么也不打印 class Colors def blue self var This is blue def red self b self blue print b var
  • 来自非嵌套/同级目录的 Mercurial 子存​​储库?

    是否可以使用同级路径创建子存储库 Subversion 是我们 选择的 版本控制系统 但我已经遇到了一些过时提交的问题 对我来说 在 Hg 和 SVN 下双重版本我的文件要方便得多 而且我已经取得了巨大的成功 然而 我还有其他一些同事使用汞
  • CUDA:将相同的内存位置流式传输到所有线程

    这是我的问题 我有相当大的双精度数集 它是一个包含 77 500 个双精度数的数组 要存储在 cuda 中的某个位置 现在 我需要一大堆线程来顺序地对该数组执行一系列操作 每个线程都必须读取该数组的相同元素 执行任务 将结果存储在共享内存中
  • Android 打瞌睡模式和前台服务

    我在这里读到了很多关于打瞌睡模式的问题 比如安卓打瞌睡模式 Android N Doze 模式 如何保持后台下载和处理 唤醒和打瞌睡模式还有许多其他人 但在很多回复中 意见不一 我自己无法测试 模拟器不支持我的处理器 我唯一的测试设备是an
  • 可变参数宏中标记的串联

    在 C 中 是否可以将可变参数连接到可变参数宏中 例子 MY MACRO A B C will yield HDR A HDR B HDR C MY MACRO X Y will yield HDR X HDR Y 正常的 运算符对于可变参