関数を定義するマクロを次に示します (意図的にマクロを単純化しました)。
#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);
どうすればプリプロセッサでそれを行うことができますか?