这个宏包装展现了什么概念?

2024-02-28

一堆代码刚刚交给我,我对标头中的宏感到困惑。我无法理解它们的用途:

#define WRAPPER_MACRO(symbol) symbol
#define ANOTHER_SYMBOL WRAPPER_MACRO(ANOTHER_SYMBOL)
#define PREFIXED_ANOTHER_SYMBOL WRAPPER_MACRO(PFX_ANOTHER_SYMBOL)

为什么要这样做?有什么好处?

编辑:这不是我的代码库中的实际逐字代码,但它具有相同的模板。我刚刚替换了宏名称。


正如@Michael 所说,我们需要查看真正的宏才能确定。但如果没有它们,我愿意做一些可能对你有帮助的猜测。

宏嵌套可能是字符串化 http://gcc.gnu.org/onlinedocs/cpp/Stringification.html事物。这段代码来自我维护的代码库:

// As per http://gcc.gnu.org/onlinedocs/cpp/Stringification.html:
// "If you want to stringify the result of expansion of a macro argument, you
// have to use two levels of macros."
#ifndef STRINGIFY
#define STRINGIFY(s) TOSTRING(s)
#define TOSTRING(s) #s
#endif

我也在猜测你的PREFIXED_ANOTHER_SYMBOL宏正在做类似的事情this http://en.cppreference.com/w/cpp/preprocessor/replace, 使用# or ##预处理器指令将某个符号添加到您提供给宏的任何内容之前。

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

这个宏包装展现了什么概念? 的相关文章

随机推荐

  • 如何将 ActiveDirectoryMembershipProvider 与 ASP.NET Identity 结合使用?

    我正在学习使用 NET Identity 我必须向 Active Directory 进行身份验证 为此目的我正在尝试使用ActiveDirecotoryMembershipProvider 我必须 验证用户 密码活动目录 https en
  • android中线程睡眠不一致

    我发现了有关 Thread sleep 的一些令人惊讶的事情 线程没有及时唤醒 让我解释 我创建一个活动 无服务 并运行如下所示的线程 Thread sleep 50000 50 seconds System out println som
  • 如何将包安装到 mvc core 2 中的 wwwroot

    最近我安装了VS 2017 其中包含Asp net mvc core 2 但这里存在一个非常混乱的问题 这就是我如何将新包安装到 wwwroot 中 我正在使用 Bower 但支持已结束 并且在使用 npm 配置后无法在项目 gt gt 新
  • 警告:此 可以替换为 标记

    我有一个FrameLayout其中包含一个TextView和两个LinearLayouts
  • 使用 Jquery.validate.js 验证电子邮件地址的格式 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在用着jquery validate js http jqueryvalidation org email method 验证公式的电子
  • Xamarin Visual Studio 2017:无法添加跨平台视图页面

    所以我使用 Xamarin 跨平台应用程序模板 我想添加LoginPage xaml查看我的项目 所以我选择add gt new item gt contentpage 总是有错误 项目系统遇到错误 在项目的层次结构中找不到新元素 视图 L
  • 有条件地包括聚合管道阶段

    我有一个函数可以根据给定的参数给我一些订单 但是 参数可以为空 在这种情况下我想留下 match alone 这是我目前拥有的代码 if req query status typeof req query status array var
  • 如何重新创建类似 Pulse 的 UI?

    我想知道如何像应用程序一样通过表格显示图像Pulse http itunes apple com us app pulse news reader id371088673 mt 8在 iPhone 上 我用了UIScrollView但这并没
  • 在 Qt 中以编程方式设置 QLabel 的像素图

    我们应该用来显示图片的 Widget 是 QLabel 我们可以直接从 QtCreator 中通过设置其 pixmap 属性来完成此操作 我们应该首先创建一个资源文件 然后将图像添加到该资源文件中 要创建 Qt 资源文件 我们进入菜单 文件
  • Bootstrap 2的模态插件中心不显示

    我使用引导模式插件 但模式对话框未显示在中心 为什么 我的错 http dl dropbox com u 573972 stackoverflow bootstrap modal html http dl dropbox com u 573
  • 在 ElementTree 中使用 XPath

    我的 XML 文件如下所示
  • 在 Program.cs 中登录

    是否可以在 Program cs Main 方法中获取 ILogger 我想将其传递给在该方法内创建的服务 我只在SO上找到这个如何从 Startup cs 中写入日志 https stackoverflow com questions 4
  • 无法从 keycloak 建立到 Mailhog 的 SMTP 连接

    我有一个 docker compose 它包含 Keycloak 和 Mailhog 我在 Keycloak 中配置了 Mailhog 但它不起作用 我在 Powershell 中尝试了 MailHog 它有效 有人可以帮我弄清楚为什么它不
  • 如何通过 REST api 停止 Jenkins 中的构建?

    我在詹金斯有一份工作 我们自己的网站通过 REST API 触发此作业的构建 有时我们想中止构建 有时 可能是在构建开始之前 在这种情况下 我们有queueItem 而不是build 如何通过 REST API 执行此操作 如果构建已经开始
  • 在 Safari Mobile 10.3 上,粘性页脚可以滚动到屏幕之外

    我们的移动 Web 应用程序具有粘性底部导航 就像您在 iOS 应用程序中经常看到的那样 并且在 Safari 10 3 发布后仅横向可以将粘性导航 页脚 滚动到屏幕之外 尽管它是position fixed并设置bottom 0这在旧版
  • 获取 ZipInputStream 的大小

    在我们完全读取流之前 是否有办法找到 估计 ZipInputStream 的大小 例如 在读取用户数据之前 我们可以使用 getNextEntry 获取条目的元数据 Inputstream 有一个方法 available 来返回可以从此输入
  • 使用 bs4 查找特定链接文本

    我正在尝试抓取一个网站并找到提要的所有标题 我在获取文本时遇到问题a我需要的标签 这是 html 的示例 td class m a href QSYcfT target blank TF4 Oreos a a href font class
  • 使用 mysqli_error 调试 mysqli 查询或死亡

    我不知道出了什么问题 result db gt query INSERT INTO post items post id content date user id category id VALUES postid content date
  • 从特定路径加载强名称程序集?

    我有一个强命名的程序集 安装到特定文件夹 而不是 GAC Reflector 中显示的名称是 Foo Bar TreeFrog Version 1 2 1 0 Culture neutral PublicKeyToken ac88c4a8b
  • 这个宏包装展现了什么概念?

    一堆代码刚刚交给我 我对标头中的宏感到困惑 我无法理解它们的用途 define WRAPPER MACRO symbol symbol define ANOTHER SYMBOL WRAPPER MACRO ANOTHER SYMBOL d