首页 > 解决方案 > 通过宏将函数参数传递给函数

问题描述

我想创建一个宏,其中一个参数是宏中使用的函数的参数。

#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。

标签: c++metaprogramming

解决方案


每当您需要对预处理器做任何重要的事情时,您都应该立即跳转到 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并使用传递的括号。


推荐阅读