【发布时间】:2016-03-04 21:20:44
【问题描述】:
我正在尝试执行以下操作:
//Bad; can't redefine macros; uses later definition.
#define foo )
#define foo(arg) ,arg)
也就是说,我希望foo(注意:不是宏函数)映射到一个事物,我希望宏函数foo(arg) 映射到另一个事物。所以foo 需要是一些映射到 . . .东西。
我还没有想出办法,(因为这是一个宏和一个常数,许多previous questions 不适用)。 我该怎么做?
Evil 编译器/平台特定选项也很棒。为 C 宏标记此 c,尽管我使用的是 C++14。
旁注(根据要求):这可以用于例如为new 制作您自己的调试重载,这也适用于placement new:
#define new new(__FILE__,__LINE__ foo
//...
void const* p1 = new int();
void const* p2 = new (ptr) int();
【问题讨论】:
-
你能描述这样一个要求的原因吗?
-
您能再描述一下需求吗?我似乎明白你在问什么,但不太明白你的问题的“)”和“,arg)”部分的意思。
-
@EugeneSh。没有老鼠洞很难,但我添加了一个简短的例子。
-
为什么他们需要同名?我不明白意图是什么。也许如果你描述了你试图用这个解决的问题?