我正在尝试做以下事情:
//Bad; can't redefine macros; uses later definition.
#define foo )
#define foo(arg) ,arg)
也就是说,我希望foo
(注意:不是一个宏函数)映射到一个东西,我希望宏函数foo(arg)
映射到其他东西。所以foo
需要是映射到的一些#define
常量(捕获两种情况)。 。 。东西。
我无法找到方法,(因为这是一个宏和常量,许多previous questions不适用)。 我该怎么做?
邪恶的编译器/平台特定选项也很棒。为C-macros标记此c,尽管我使用的是C ++ 14。
旁注(按要求):这可以用于例如为new
创建自己的调试重载,这也适用于新的放置:
#define new new(__FILE__,__LINE__ foo
//...
void const* p1 = new int();
void const* p2 = new (ptr) int();
答案 0 :(得分:1)
您似乎正在寻找一个预处理器,它具有 function 的不同名称空间 - (带参数)和类似对象的(普通#defines)宏 - 我不喜欢我不知道会有什么,如果有的话,这将是根本的混乱,我认为。
我理解你想要的东西(注意这实际上不是试图提供解决方案)
[(1, 2), (2, 3), (3, 4)]
pnew和new应该使用相同的关键字。不,我不认为这是可能的(我很高兴它不是;))。
答案 1 :(得分:-1)
带有变量签名的函数只能在C ++中使用,称为"函数重载"。