在 #define 宏中转义 # 符号?

2023-12-15

在不涉及血淋淋的细节的情况下,我想使用#define宏将扩展为#include但“#”符号使预处理器感到困惑(因为它认为我想引用一个参数。)

例如,我想做这样的事情:

#define MACRO(name) #include "name##foo"

并这样使用它:

MACRO(Test)

这将扩展到:

#include "Testfoo"

不起眼的 # 符号导致预处理器崩溃。 MinGW 给我以下错误:

'#' is not followed by a macro parameter

我想我需要转义 # 符号,但如果可能的话我不需要。

是的,宏确实是邪恶的......


It is可以将哈希令牌插入到预处理的令牌流中。您可以按如下方式进行操作:

#define MACRO(hash, name) hash include name
MACRO(#,"hello")

——扩展到:

# include "hello"

However,该标准明确排除了对此类行是否存在预处理指令的任何进一步分析 [cpp.rescan]:

生成的完全宏替换的预处理标记序列不会作为预处理指令进行处理,即使它类似于预处理指令。

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

在 #define 宏中转义 # 符号? 的相关文章

  • 查找哪些页面不再与写入时复制共享

    假设我在 Linux 中有一个进程 我从中fork 另一个相同的过程 后forking 因为原始进程将开始写入内存 Linux写时复制机制将为进程提供与分叉进程使用的不同的唯一物理内存页 在执行的某个时刻 我如何知道原始进程的哪些页面已被写
  • OpenCv读/写视频色差

    我试图简单地使用 openCV 打开视频 处理帧并将处理后的帧写入新的视频文件 我的问题是 即使我根本不处理帧 只是打开视频 使用 VideoCapture 读取帧并使用 VideoWriter 将它们写入新文件 输出文件看起来比输入更 绿
  • 使用具有现有访问令牌的 Google API .NET 客户端

    用例如下 移动应用程序正在通过 Google 对用户进行身份验证 并且在某些时候 我们需要将用户的视频发布到他的 YouTube 帐户 出于实际原因 实际发布应该由后端完成 已经存储在那里的大文件 由于用户已经通过应用程序的身份验证 因此应
  • 32 位应用程序的特征最大矩阵大小

    所以 我正在寻找Eigen http eigen tuxfamily org index php title Main Page当我尝试声明大于 10000x10000 的矩阵时 包崩溃 我需要声明一个像这样的矩阵 可靠地大约有 13000
  • 如何配置 WebService 返回 ArrayList 而不是 Array?

    我有一个在 jax ws 上实现的 java Web 服务 此 Web 服务返回用户的通用列表 它运行得很好 Stateless name AdminToolSessionEJB RemoteBinding jndiBinding Admi
  • 暂停下载线程

    我正在用 C 编写一个非常简单的批量下载程序 该程序读取要下载的 URL 的 txt 文件 我已经设置了一个全局线程和委托来更新 GUI 按下 开始 按钮即可创建并启动该线程 我想要做的是有一个 暂停 按钮 使我能够暂停下载 直到点击 恢复
  • 访问者和模板化虚拟方法

    在一个典型的实现中Visitor模式 该类必须考虑基类的所有变体 后代 在许多情况下 访问者中的相同方法内容应用于不同的方法 在这种情况下 模板化的虚拟方法是理想的选择 但目前这是不允许的 那么 模板化方法可以用来解析父类的虚方法吗 鉴于
  • Azure 事件中心 - 按顺序接收事件

    我使用下面的代码从 Azure Event Hub 接收事件 https learn microsoft com en us azure event hubs event hubs dotnet framework getstarted s
  • 生产代码中的 LRU 实现

    我有一些 C 代码 需要使用 LRU 技术实现缓存替换 目前我知道两种实现LRU缓存替换的方法 每次访问缓存数据时使用时间戳 最后比较替换时的时间戳 使用缓存项的堆栈 如果最近访问过它们 则将它们移动到顶部 因此最后底部将包含 LRU 候选
  • 如何在c#中的内部类中访问外部类的变量[重复]

    这个问题在这里已经有答案了 我有两个类 我需要声明两个类共有的变量 如果是嵌套类 我需要访问内部类中的外部类变量 请给我一个更好的方法来在 C 中做到这一点 示例代码 Class A int a Class B Need to access
  • g++ 对于看似不相关的变量“警告:迭代...调用未定义的行为”

    考虑以下代码strange cpp include
  • 将代码拆分为标头/源文件

    我从 Asio 的示例页面中获取了以下代码 class tcp connection public boost enable shared from this
  • 结构体指针的动态数组

    我必须使用以下代码块来完成学校作业 严格不进行任何修改 typedef struct char firstName char lastName int id float mark pStudentRecord pStudentRecord
  • 什么是 __declspec 以及何时需要使用它?

    我见过这样的例子 declspec在我正在阅读的代码中 它是什么 我什么时候需要使用这个构造 这是 Microsoft 对 C 语言的特定扩展 它允许您使用存储类信息来赋予类型或函数属性 文档 declspec C https learn
  • 双精度类型二维多维数组的 pinvoke 编组作为 c# 和 c++ 之间的输入和输出

    我有以下我正在尝试解决的双物质类型的 2d 多维数组的 c 和 c pinvoke 编组 我已经查看了以下热门内容以获得我目前拥有的内容使用双精度数组进行 P Invoke 在 C 和 C 之间编组数据 https stackoverflo
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没
  • 使用 Crypto++ 获取 ECDSA 签名

    我必须使用 Crypto 在变量中获取 ECDSA 签名 我在启动 SignMessage 后尝试获取它 但签名为空 我怎样才能得到它 你看过 Crypto wiki 吗 上面有很多东西椭圆曲线数字签名算法 http www cryptop
  • 是否可以在 C# 中强制接口实现为虚拟?

    我今天遇到了一个问题 试图重写尚未声明为虚拟的接口方法的实现 在这种情况下 我无法更改接口或基本实现 而必须尝试其他方法 但我想知道是否有一种方法可以强制类使用虚拟方法实现接口 Example interface IBuilder
  • 匿名结构体作为返回类型

    下面的代码编译得很好VC 19 00 23506 http rextester com GMUP11493 标志 Wall WX Za 与VC 19 10 25109 0 标志 Wall WX Za permissive 这可以在以下位置检
  • 错误:无效使用不完整类型“类 Move”/未定义对 Move::NONE 的引用

    拜托 我不知道为什么这个简单的代码被拒绝 它给了我 2 个编译错误 请帮帮我 I use 代码 块 20 03 我的编译器是GNU GCC 移动 hpp class Move public Move Move int int public

随机推荐

  • Android 日历特定事件删除

    我创建了一个应用程序 可以轻松地将我想要的值放入设备的日历中 但是当我想以编程方式从日历中删除它时 我找不到方法 我在网上搜索过 主要是其他 stackoverflow 问题 以找到答案 此处链接 删除日历条目 日历中的事件未删除 删除特定
  • 透明前景

    我想添加一个半透明的均匀层作为前景div元素 最好的方法是什么 你可以使用这个CSS div parent position relative this div is a descendent of the div above div ch
  • Android:带背景的透明彩色ListView

    I have a doubt I have a listview and below it there is a background with a image I would like to have the lists with a t
  • 执行长进程时,Windows 窗体中的动画 GIF

    我用 C 开发了一个简单的 Windows 应用程序 MDI 它将数据从 SQL 导出到 Excel 我正在使用 ClosedXML 成功实现这一目标 当该过程执行时 我想显示一个包含动画 GIF 图像的图片框 我是初学者 不知道如何实现这
  • 如何在Android中的mapView上使用kml文件

    我想知道如何以编程方式将已创建的 kml 文件加载到地图视图中 kml 文件存储在 SD 卡中 我已经设置了一个mapActivity 我是否只是 SAX 解析 kml 文件并使用绘制方法来创建边界 这是存储在手机上的 kml 文件的片段
  • 使用 pd.json_normalize 展平字典

    我目前正在努力压平这个字典文件 并且已经遇到了一些障碍 我正在尝试使用json normalize来扁平化这些数据 如果我用单个实例进行测试 它可以工作 但如果我想展平所有数据 它将返回一个错误 说明key error 0 我不知道如何解决
  • 如何在不使用 tf.assign 的情况下为 TensorFlow 中的 tf.Variable 赋值

    我有一个包含 4x4 单位矩阵的变量 我希望为这个矩阵分配一些值 这些值是由模型学习的 当我使用tf assign 我收到一条错误消息 指出跨步切片没有渐变 我的问题是如何在不使用的情况下做到这一点tf assign 这是所需行为的示例代码
  • MyBatis - 如何创建动态 WHERE 子句

    服务获取一个未知对象 其中包含三个值的列表 列 运算符 值 例如 电子邮件 就像 测试 基于结果列表来构建我拥有的 WHERE 子句 但我也可以构建这样的条件 如下所示 例如 WHERE 电子邮件如 测试 AND user id 5 或 t
  • XSD schemaLocation、targetNamespace、默认 XML 命名空间匹配

    当我根据 XSD 验证 XML 时 出现此错误 模式和实例都是有效的 我能够在 XML 解析器中验证它们 但在 Java 中遇到此错误 cvc elt 1 找不到元素 fieldsMapper 的声明 下面是我的架构
  • JSTL fmt 库抛出 500 错误,需要启用会话吗?

    我正在 Google App Engine 上开发一个简单的 servlet JSP 数据驱动的网站 我开始在一些数据输入表单上使用 JSTL fmt 库 并在使用标签时出现以下与会话相关的错误
  • 共享可分配数组

    我有一些可分配的数组 需要在一些子例程之间共享 我通常只会将它们作为参数传递 或者可能将所有内容写入模块中 但恐怕在我的情况下这是不可能的 我只编写一些自己的子例程并使用 FEM 求解器提供和描述的子例程 所以我无法更改此子例程的参数或将它
  • 如何测试 SimpleJdbcCall

    我需要为此代码创建测试 Autowired JdbcTemplate jdbcTemplate public List
  • 通过 Javascript 调用时,WCF Web 服务返回“错误请求”错误

    我正在尝试通过 javascript 向 WCF Web 服务方法发出 ajax GET 请求 该请求每次都会返回 400 错误请求 错误 但是 如果我通过 WCF 测试客户端调用相同的 Web 服务方法 它会返回正确的结果 此外 通过 j
  • 定量和定性解释变量之间相互作用的多元 Logistic 回归

    作为后续这个问题 我拟合了定量和定性解释变量之间相互作用的多重逻辑回归 MWE 如下 Type lt rep x LETTERS 1 3 each 5 Conc lt rep x seq from 0 to 40 by 10 times 3
  • 隐藏 Access 2016 功能区

    我试图在运行时禁用 Access 的所有默认工具栏和功能区 到目前为止 我遇到的剩余问题是功能区 我按照这个教程https msdn microsoft com en us library office ff837012 aspx 但当 A
  • 将实例的一个属性与一组其他实例进行比较

    我正在尝试编写一个实例方法Card将单张卡与数组进行比较的类 该类具有一些属性 例如 shape and color The otherCards数组中充满了此类的其他实例 这些实例也有它们的shapes and colors 现在 我想编
  • 显示所有打开的 RODBC 连接

    有谁知道如何做到这一点 showConnections 不会列出来自 odbcConnect 的任何打开的连接 您可以通过以下方式缩小搜索范围 这将返回当前环境中 RODBC 类的所有变量 envVariables lt ls bools
  • MongoDB .Net 驱动程序 2.0 Pull(删除元素)

    你能帮我用 2 0 驱动程序正确运行 拉 删除 吗 我有一个像这样的集合 我想通过关注者字段删除第一个名为 fethiye 的关注者 id ObjectId 554e05dfc90d3d4dfcaa2aea username bodrum
  • 为什么设置 MenuItem.InputGestureText 不会导致当我执行输入手势时激活 MenuItem?

    我想实现键盘快捷键MenuItem 我使用了下面的代码
  • 在 #define 宏中转义 # 符号?

    在不涉及血淋淋的细节的情况下 我想使用 define宏将扩展为 include但 符号使预处理器感到困惑 因为它认为我想引用一个参数 例如 我想做这样的事情 define MACRO name include name foo 并这样使用它