Я чего то не понимаю. Каким образом функция получает входные и возвращает выходные? Из вопроса это не ясно. В зависимости от способа и ответ будет. Особенно инетересно, каким образом возвращается результат.
имхо, в тексте примера указаны переменные 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
 }
}
это пример, этот код и линейно неплохо бы смотрелся, но когда подсистема принимает аргументы, и много, через глобальное пространство имен, то линейный вид уже не получается