c++ - 通过宏将函数参数传递给函数
问题描述
我想创建一个宏,其中一个参数是宏中使用的函数的参数。
#define Macro(PERAMS, OTHER) \
functionBeingUsed(PERAMS); \
OTHER;
Macro(1,2,3,4, int i = 0);
如您所见,您可以看到宏和函数都在使用逗号。这会导致代码损坏。
我想知道是否有一种方法可以实现我需要的结果,以便可以将代码解释如下。
Macro((1,2,3,4), int i = 0);
请注意我没有使用 C++11。
解决方案
每当您需要对预处理器做任何重要的事情时,您都应该立即跳转到 Boost.PP 库。在这里,BOOST_PP_REMOVE_PARENS宏似乎是相关的:
#define Macro(PARAMS, OTHER) \
functionBeingUsed(BOOST_PP_REMOVE_PARENS(PARAMS)); \
OTHER;
Macro((1,2,3,4), int i = 0);
或者,您可以只编写functionBeingUsed PARAMS
并使用传递的括号。
推荐阅读
- chromium - 是否可以在 blazor SPA 中嵌入铬浏览器
- java - Fragment 中的空回收站视图
- nfc - 一次读取 emv 中的所有可用记录
- c# - Gtk# 应用程序未正确呈现 TreeView
- mysql - 如何创建以 user000001 useruser000002 等开头的自动增量列?
- python - Pygame角色空闲动画
- amazon-web-services - 通过 Code Pipeline 部署时在 AWS S3 中保留元标记
- hashicorp-vault - Vault 插件错误:无法确定插件类型
- matlab - 在 Matlab 中加速 mex 文件
- mongodb - MongoDB:查找没有子文档符合条件的文档