gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 23:15:09 24 4
gpt4 key购买 nike

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com