【发布时间】:2014-04-02 06:21:05
【问题描述】:
我需要宏方面的帮助!
假设我定义了以下常量
#define foo_tacos_tuesday 1
#define foo_tacos 1
#define foo_nachos_wednesday 2
#define foo_nachos 3
我想编写一个执行以下操作的宏
#define MyFancyMacro( arg1, arg2 ) \
#if ( foo_ ## arg1 ## _ ## arg2 != foo_ ## arg1 ) \
foo_ ## arg1 ## _ ## arg2, foo_ ## arg1,
所以我可以建立一个只映射不匹配值的映射表:
static const int mappingTable[] =
{
MyFancyMacro(tacos, tuesday)
MyFancyMacro(nachos, wednesday)
};
最后mappingTable应该只有两个整数,包含2和3。
知道怎么做吗?
谢谢。
【问题讨论】:
-
答案都很无礼...重新考虑你的方法。您没有提供足够的上下文,但它确实看起来像经典的 XY problem。
标签: c macros concatenation c-preprocessor conditional-compilation