В C. нет такого понятия, как указатели на типовые родовые функции.
Однако у вас может быть структура указателей для различных релевантных типов, например,
typedef enum {
USE_FLOAT = 0,
USE_DOUBLE = 1,
// USE_LONG_DOUBLE = 2 // maybe you have this one as well
} complex_component_type_selector;
typedef struct {
union {
float complex (*float_)(float complex);
double complex(*double_)(double complex);
} function_ptr;
complex_component_type_selector component_type;
} variant_function;
typedef union {
union {
float complex float_;
double complex double_
} datum;
complex_component_type_selector component_type;
} variant_complex_datum;
и с этим вы можете передать variant_complex_function
вместе с variant_complex_datum
, чтобы получить то, что вы хотели.
... Теперь мое предложение немного грубовато и недооценено для некоторых вариантов . Я уверен, что есть библиотеки для C, которые являются более сложными и всеобъемлющими ... о да, вот, пожалуйста:
Библиотека вариантов типа для C