使用`#define`常量

时间:2016-03-04 21:20:45

标签: c macros

我正在尝试做以下事情:

//Bad; can't redefine macros; uses later definition.
#define foo          )
#define foo(arg) ,arg)

也就是说,我希望foo(注意:不是一个宏函数)映射到一个东西,我希望宏函数foo(arg)映射到其他东西。所以foo需要是映射到的一些#define常量(捕获两种情况)。 。 。东西。

我无法找到方法,(因为这是一个宏和常量,许多previous questions不适用)。 我该怎么做?

邪恶的编译器/平台特定选项也很棒。为C-macros标记此,尽管我使用的是C ++ 14。

旁注(按要求):这可以用于例如为new创建自己的调试重载,这也适用于新的放置:

#define new new(__FILE__,__LINE__ foo
//...
void const* p1 = new       int();
void const* p2 = new (ptr) int();

2 个答案:

答案 0 :(得分:1)

您似乎正在寻找一个预处理器,它具有 function 的不同名称空间 - (带参数)和类似对象的(普通#defines)宏 - 我不喜欢我不知道会有什么,如果有的话,这将是根本的混乱,我认为。

我理解你想要的东西(注意这实际上不是试图提供解决方案)

[(1, 2), (2, 3), (3, 4)]

pnew和new应该使用相同的关键字。不,我不认为这是可能的(我很高兴它不是;))。

答案 1 :(得分:-1)

带有变量签名的函数只能在C ++中使用,称为"函数重载"。