在 #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 宏中转义 # 符号? 的相关文章

  • 用于代数简化和求解的 C# 库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 网络上有很多代数求解器和简化器 例如 algebra com 上不错的代数求解器和简化器 然而 我正在
  • 注销租约抛出 InvalidOperationException

    我有一个使用插件的应用程序 我在另一个应用程序域中加载插件 我使用 RemoteHandle 类http www pocketsilicon com post Things That Make My Life Hell Part 1 App
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 计算 Richtextbox 中所有单词的最有效方法是什么?

    我正在编写一个文本编辑器 需要提供实时字数统计 现在我正在使用这个扩展方法 public static int WordCount this string s s s TrimEnd if String IsNullOrEmpty s re
  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • 在 LINQ 中按 Id 连接多表和分组

    我想按categoryId显示列表产品的名称组 这是我的代码 我想要我的视图显示结果 Desktop PC HP Red PC Dell Yellow PC Asus Red SmartPhone Lumia 720 Blue 我的组模型
  • 在 C 中匹配二进制模式

    我目前正在开发一个 C 程序 需要解析一些定制的数据结构 幸运的是我知道它们是如何构造的 但是我不确定如何在 C 中实现我的解析器 每个结构的长度都是 32 位 并且每个结构都可以通过其二进制签名来识别 举个例子 有两个我感兴趣的特定结构
  • Clojure 宏总是泄漏吗?

    如果你读过这个问题宏 gt 带有匿名函数 https stackoverflow com questions 10740265 macro with anonymous functions 10740411 comment13981517
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • 为什么 Google 测试会出现段错误?

    我是 Google Test 的新手 正在尝试提供的示例 我的问题是 当我引入失败并设置GTEST BREAK ON FAILURE 1 或使用命令行选项 GTest 将出现段错误 我正在考虑这个例子 https code google c
  • 在 Visual Studio 2010 中从 Fortran 调用 C++ 函数

    我想从 Fortran 调用 C 函数 为此 我在 Visual Studio 2010 中创建了一个 FORTRAN 项目 之后 我将一个 Cpp 项目添加到该 FORTRAN 项目中 当我要构建程序时出现以下错误 Error 1 unr
  • 具有交替类型的可变参数模板参数包

    我想知道是否可以使用参数包捕获交替参数模式 例如 template
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • C#:帮助理解 UML 类图中的 <>

    我目前正在做一个项目 我们必须从 UML 图编写代码 我了解 UML 类图的剖析 但我无法理解什么 lt
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • 动态添加 ASP.Net 控件

    我有一个存储过程 它根据数据库中存储的记录数返回多行 现在我想有一种方法来创建 div 带有包含该行值的控件的标记 如果从数据库返回 10 行 则 10 div 必须创建标签 我有下面的代码来从数据库中获取结果 但我不知道如何从这里继续 S
  • 为什么 gcc 抱怨“错误:模板参数 '0' 的类型 'intT' 取决于模板参数”?

    我的编译器是gcc 4 9 0 以下代码无法编译 template
  • C++ 条件编译

    我有以下代码片段 ifdef DO LOG define log p record p else define log p endif void record char data 现在如果我打电话log hello world 在我的代码中
  • Oracle Data Provider for .NET 不支持 Oracle 19.0.48.0.0

    我们刚刚升级到 Oracle 19c 19 3 0 所有应用程序都停止工作并出现以下错误消息 Oracle Data Provider for NET 不支持 Oracle 19 0 48 0 0 我将 Oracle ManagedData
  • 如何将 PostgreSql 与 EntityFramework 6.0.2 集成? [复制]

    这个问题在这里已经有答案了 我收到以下错误 实体框架提供程序类型的 实例 成员 Npgsql NpgsqlServices Npgsql 版本 2 0 14 2 文化 中性 PublicKeyToken 5d8b90d52f46fda7 没

随机推荐

  • 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 并这样使用它