Я хотел бы вызвать динамические функции C (например, форму stdlib, math ...). Это означает, что моя программа C знает только указатель на случайную функцию (например, printf
) и свою подпись (закодированную как массив символов: char *
, ...).C - вызов динамической функции без указателя функции
Моя цель в reflectCall-функцию, которая получает указатель на функцию (&printf
), подпись (каким-то образом кодируется в char[]
), а также параметры в виде long[]
(long
не фактический тип данных, один длинный значение может также представляют собой двойное значение, указатель, ...).
Подпись моего отражения функции поэтому выглядит следующим образом:
long reflectCall(void *funcPointer, char[] types, long[] args)
Функция должна сделать фактический вызов функции *funcPointer
и, наконец, вернуть результат.
В результате я могу не создать указатель указателя; например как этот:
int (*functionPtr)(int,int);
Может кто-нибудь дать мне подсказку, как решить эту проблему или предложить любую справочную реализацию?
Там в основном не способ сделать это в платформо-независимым способом. –
Извините, вы не можете передавать varargs в функцию varargs портативно. C просто не поддерживает необходимое отражение. – nneonneo