Я чего то не понимаю. Каким образом функция получает входные и возвращает выходные? Из вопроса это не ясно. В зависимости от способа и ответ будет. Особенно инетересно, каким образом возвращается результат.
имхо, в тексте примера указаны переменные arg1, arg2, retValue1, retValue1 через которые myfunc() принимает входные параметры и возвращает результат. в данном примере переменные глобальные
В принципе идея насчет таблицы ИМХО правильная. А в общем идея, чтобы не писать каждый раз обработчик таблицы - сделать его таким, что он будет получать адрес функции-wrapper'а вокруг твоей функции, которая собственно и будет запускать ее (твою функцию) для заданного набора из таблицы.
а можно поподробнее о врапере ?
Все это возможно если таблицы разнятся только количеством элементов, а не их типом.
все было бы хорошо, но ведь в таблицу кроме задаваемых значений сводятся и ожидаемые результаты
int arg1, int arg2, int ret;
0, 0, 0 ; //0+0=0
1, 0, 1 ; //1+0=1
1, 1, 2 ; //1+1=2
при этом если типы еще как-то можно привести к 4 байтам, то количество входов и выходов везде разнится
сейчас я реализовал это через скрипт для перла, но в дебагере весьма криво это смотрится
(
void test1()
{
int _a, _b, _ret;
CTEST_CASE( _ret = sum(_a, _b) ) {
int _a, int _b, int _ret;
0, 0, 0 ; //0+0=0
1, 0, 1 ; //1+0=1
1, 1, 2 ; //1+1=2
}
}
это пример, этот код и линейно неплохо бы смотрелся, но когда подсистема принимает аргументы, и много, через глобальное пространство имен, то линейный вид уже не получается