C ++中的函数名宏

时间:2011-08-02 08:59:56

标签: c++ macros

我有一个看起来像这样的c ++宏

#define lua_tpushstring(L,n,f) \
            (lua_pushstring(L, n), lua_pushstring(L, f))

我想修改它以便像这样工作

#define lua_tpush(TYPE,L,n,f) \
            (lua_pushstring(L, n), lua_pushTYPE(L, f))

lua_tpush(boolean, L, "a", true);
lua_tpush(string, L, "a", "");

简单的改变是什么?

2 个答案:

答案 0 :(得分:6)

Token concatenation

#define lua_tpush(TYPE,L,n,f)  (lua_pushstring(L, n), lua_push##TYPE(L, f))

答案 1 :(得分:3)

只需将##放在TYPE之前。

#define lua_tpush(TYPE,L,n,f) \
            (lua_pushstring(L, n), lua_push##TYPE(L, f))
                     ^^^^^^ did you wanted ##TYPE here