gpt4 book ai didi

C数组结构函数指针

转载 作者:行者123 更新时间:2023-12-01 14:17:36 26 4
gpt4 key购买 nike

如何用结构表创建一个函数指针,例如

static struct {
int pid;
int queue[MAXPROCS];
} semtab[MAXSEMS];

我想我明白如何使用带this post 的函数指针使面向对象在C 语言中等效,但是当我的结构是一个数组时我该怎么办。我对语法还是有点疑惑。

会不会是这样的

static struct {
int pid;
int queue[MAXPROCS];

void (*fncPtr_enqueue)(int) = enqueue;
// or is it void(*enqueue)(semtable[]*) ?
int (*fcnPtr_dequeue)() = dequeue;
} semtab[MAXSEMS];

void enqueue(int i) { /* code */ }
int dequeue() { /* code */ }


// then to use it, it would be like this?
void foo() {
semtab[5].enqueue(6);
}

最佳答案

使用

static struct {
int pid;
int queue[MAXPROCS];

void (*fncPtr_enqueue)(int); // This defines a member fncPtr_enqueue
int (*fncPtr_dequeue)(); // Note that you had fcnPtr_ in your post.
// I have fncPtr_ here.
} semtab[MAXSEMS];

void enqueue(int i) { /* code */ }
int dequeue() { /* code */ }

semtab 中需要具有有效函数指针的每个对象都需要更新。

semtab[0].fncPtr_enqueue = enqueue;
semtab[0].fncPtr_dequeue = dequeue;

关于C数组结构函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28532204/

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