0

関数を定義するマクロを次に示します (意図的にマクロを単純化しました)。

#define GET_VALUE_IMPL(func_name, value_type, get_func)                 \
    static value_type func_name(const char *token, value_type def_value) \
    {                                                                   \
        value_type  value;                                              \
        assert(token != NULL);                                          \
        value = get_func(token, def_value);                             \
        return value;                                                   \
    }

そして、このマクロを次のように使用して 2 つの関数を定義していget_intますget_string

GET_VALUE_IMPL(get_int, int, external_get_int);
GET_VALUE_IMPL(get_string, char*, external_get_str);

ここに私の問題があります: for get_string、関数を4番目のパラメーターとして渡しGET_VALUE_IMPL、代入後に値で呼び出されるようにしたいと思いますvalue = get_func(token, def_value);

どうすればプリプロセッサでそれを行うことができますか?

4

0 に答える 0