假设我们有一个像这样的宏:
#define SOME_MACRO(a) ...do stuff
现在,以这种方式调用宏:
SOME_MACRO(argName=1)
它应该只返回给定参数的第一部分=(在这种情况下只是'argName')。可能吗? 提前谢谢
谢谢大家,这是我的全部问题: 我正在使用这个宏创建一个枚举和一个函数来将枚举值作为字符串:
#define RA_MAKE_ENUMERATOR_S1(r, data, elem) case elem : return BOOST_PP_STRINGIZE(elem);
#define RA_MAKE_ENUMERATOR(name, enumerators) \
enum name \
{ \
BOOST_PP_SEQ_ENUM(enumerators) \
}; \
\
inline const std::string ValueToString(name v) \
{ \
switch (v) \
{ \
BOOST_PP_SEQ_FOR_EACH(RA_MAKE_ENUMERATOR_S1, name, enumerators) \
} \
}
RA_MAKE_ENUMERATOR(eTest, (ONE) (TWO))
这将输出以下代码:
enum eTest
{
ONE,
TWO
};
inline const std::string ValueToString(eTest v)
{
switch (v)
{
case ONE : return "ONE";
case TWO : return "TWO";
}
}
哪个是完美的。但是我想为ONE和TWO分配一个特定的值,如:
enum eTest
{
ONE = 2,
TWO = 4
};
我尝试将宏调用为
RA_MAKE_ENUMERATOR(eTest, (ONE=2) (TWO=2))
枚举器没问题但当然ValueToString函数搞砸了