У меня каждая команда принимаемая из терминала привязана к своей функции. Функции бывают разные - возвращающие значение, не возвращающие значение, с одним аргументом, двумя аргументами и так далее.
Я решил собрать все мои функции в структуру и потом присваивать соответствующий указатель.
Код
typedef struct
{
void (*fp1)(void);
void (*fp2)(uint32_t);
void (*fp3)(uint32_t, uint32_t);
void (*fp4)(uint32_t, uint32_t, uint32_t);
uint32_t (*fp5)(uint32_t);
uint32_t (*fp6)(uint32_t, uint32_t);
uint32_t (*fp7)(uint32_t, uint32_t, uint32_t);
//uint32_t (*fp5)(double x, double p[], double c);
} fp;
struct command
{
char *name; //command name
uint32_t minargs;
uint32_t maxargs;
uint32_t minval;
uint32_t maxval;
//uint32_t return_type;
//void *varp; //return pointer to variable
fp read_func_pointer;
fp write_func_pointer;
};
struct command commands[] = {
{"gsm", 1, 2, 0, 0, ???? , ???? },
{"ifb", 0, 1, 0, 0, ????, ???? },
};
Не могу никак сообразить как мне подставить указатель в команду (там где вопросительные знаки).