假设我有以下功能:
void func1 (void arg1, int arg2);
int func2 (void arg1, int arg2, char* arg3);
char func3 (char* arg1, int arg2, FIlE* arg3);
.
.
我的意思是,我可以拥有返回任何类型并接受任意数量的任何类型的参数的函数。
现在,我如何创建一个函数,将另一个函数作为参数并返回其结果?像这样的东西:
void* func_caller(func* func(args))
{
return func;
}
有关这方面的更多详细信息,我想通过 Telnet 套接字调用这些函数。我在程序中编写了一个函数来建立连接。现在,我想通过在 Telnet 输入中输入来调用程序中的其他函数。
假设我的 Telnet 功能提供了一个提示,例如 ->,我想做这样的事情:
-> add(4,5) or -> add 4 5 /* actually i don't care how to write it */
Ans: 9
-> read_log_file()
Ans: reading File....
C 标准不提供调用具有程序执行期间确定的参数数量和参数类型的函数的功能,仅在程序翻译期间提供。 (某些 C 实现可能提供此类功能。)通常,需要调用多种类型函数的程序是通过编写代码来实现的,其中(至少)对要支持的每种类型的函数进行一次调用,并使用
switch
在这些调用之间进行分派或 if
陈述。