我有两个前向声明的函数和一个结构:
int _bar(void*);
int _bar2(int);
typedef struct foo {
void* array[128];
int (*bar)(void* x) = _bar;
int (*bar2)(int x) = _bar2;
} FOO;
如何在 FOO
的任意实例中从 bar
和 bar2
访问 array
,这样array
每个函数都是可变的? 能做到吗?
是的,我知道使用 C 以外的语言来做这种事情更容易,也可以说更好。这根本不是重点,所以请按要求回答问题,而不是像这里的许多回复那样尝试“诊断”一些更深层次的问题。
最佳答案
您正在尝试使用 C
进行 OOP。您希望 bar
和 foo
像 C++ 成员函数一样。在 C
中你无法做到这一点,你甚至不应该尝试。不要对抗语言。
只需向自由函数添加一个 Foo
参数即可:
typedef struct foo {
void* array[128];
} Foo;
int bar(/*const*/ Foo* foo, void*);
int bar2(/*const*/ Foo* foo, int);
关于c - 在 C 中,结构体的数据成员如何用作同一结构体的成员所指向的函数的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52640125/