Динамическое создание имен функций с помощью макросов

Я пытаюсь создать макрос (C/C++) для динамического создания функции. В основном у меня есть функция, имя которой меняется в части "MyClassA". Также аргументы должны передаваться через определение макроса. Затем есть переменный вызов метода внутри функции, например, "methodForClassA", опять же с переменным набором аргументов.

void Java_somepackage_MyClassA_fixMethod(int arg1, int arg2) {
Toolbox.methodForClassA(arg1, arg2);
}

Существует более 40 функций с таким шаблоном. Конечно, я могу создать их вручную или с помощью скрипта. Но можно ли сделать это с помощью макроса? Например, что-то вроде этого (которое не работает):

# define MACRO_TEST(classname, methodname, args, argsMethod) void Java_somepackage_##classname_fixMethod(##args) {\
    Toolbox.##methodname(##argsMethod);\
} 
MACRO_TEST(MyClassA, methodForClassA, args1, args2)

После некоторых экспериментов и чтения документации я смог найти только способ создания "динамических" имен функций с шаблонами, где "(" следует за динамической частью:

#define FUNCTION(name, x) int func_##name() { return x;}
FUNCTION(test, 2);

С уважением,

6
задан Hyndrix 27 November 2011 в 18:54
поделиться