我遇到了 C 中的设计问题。
假设我有相当多的函数,具有不同的参数计数。
问题:
int print_one(int x)
{
printf("one: %d\n", x);
return 1;
}
int print_three(int x, int y, int z)
{
printf("three: %d-%d-%d\n", x, y, z);
return 3;
}
现在,我想将一些属性连接到结构中的这些函数,这样我就可以在不知道确切函数的情况下操作它们,包括它们的参数计数(我什至可以调用结构接口)
我像这样尝试过,(我认为这是非常错误的):
typedef int (*pfunc)(int c, ...);
typedef struct _stroffunc
{
pfunc myfunction;
int flags;
int some_thing_count;
int arguments[10];
int argumentcount;
} stroffunc;
int main()
{
stroffunc firststruct;
firststruct.pfunc = (pfunc) print_two;
firststruct.something_count = 101;
arguments[0] = 102;
argumentcount = 1;
flag &= SOME_SEXY_FLAG;
// now I can call it, in a pretty ugly way ... however I want (with patially random results ofc)
firststruct.pfunc(firststruct.arguments[0]);
firststruct.pfunc(firststruct.arguments[0], 124, 11);
firststruct.pfunc(1, firststruct.arguments[0], 124, 1, 1);
}
我发现这个解决方案非常难看,我认为(希望)有一个更好的解决方案来调用 & 和设置函数指针。
我只是希望,我足够清楚......注意:我没有编译这段代码,但我编译并运行了一个非常相似的代码,所以这些概念是有效的。注意:需要纯 C