c - 在 C 中,结构体的数据成员如何用作同一结构体的成员所指向的函数的一部分?

标签 c struct function-pointers

我有两个前向声明的函数和一个结构:

int _bar(void*);
int _bar2(int);

typedef struct foo {
  void* array[128];
  int (*bar)(void* x) = _bar;
  int (*bar2)(int x) = _bar2;
} FOO;

如何在 FOO 的任意实例中从 barbar2 访问 array,这样array 每个函数都是可变的? 能做到吗?

是的,我知道使用 C 以外的语言来做这种事情更容易,也可以说更好。这根本不是重点,所以按要求回答问题,而不是像这里的许多回复那样尝试“诊断”一些更深层次的问题。

最佳答案

您正在尝试使用 C 进行 OOP。您希望 barfoo 像 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/

相关文章:

c - C 中的 fclose() 函数默认附加 EOF 字符吗?

c - 如何让 fgets 停止从键盘读取

c++ - 为什么需要告诉结构它们有多大?

c++ - 将带有存储在 std::function 中的捕获子句的 lambda 转换为原始函数指针

c++ - 将非静态成员函数作为参数传递

c - 尝试在整数数组中复制命令行参数时出现段错误

c++ - 如何获取使用 malloc() 分配的内存块的大小?

c - 如何在C中将int打印到char类型的数组变量中?

ios - 如何获取具有最高 Int 的变量并检索 String Swift

c - 在 GCC 中实现编译时只读函数指针表