Макрос имени функции в C ++ - PullRequest
       5

Макрос имени функции в C ++

2 голосов
/ 02 августа 2011

У меня есть макрос 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 ]

6 голосов
/ 02 августа 2011

Объединение токенов :

#define lua_tpush(TYPE,L,n,f)  (lua_pushstring(L, n), lua_push##TYPE(L, f))
3 голосов
/ 02 августа 2011

Просто поставьте ## перед TYPE.

#define lua_tpush(TYPE,L,n,f) \
            (lua_pushstring(L, n), lua_push##TYPE(L, f))
                     ^^^^^^ did you wanted ##TYPE here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...