gpt4 book ai didi

c - C 结构体中的函数指针

转载 作者:行者123 更新时间:2023-11-30 14:47:29 24 4
gpt4 key购买 nike

当我尝试在结构内部使用 C 函数指针时遇到错误(该函数只是从链接列表中弹出第一个元素并返回该元素):

main.c: In function ‘simulation’: main.c:279: error: incompatible types when assigning to type ‘struct PROCESS *’ from type ‘PROCESS’

我的代码是这样的:

typedef struct PROCESS {
struct PS_TABLE *tbl_ref;
int pid;
int time_in_prev_state;
int state_ts;
int static_prio;
int dynamic_prio;
int cpu_rem;
struct PROCESS *next;
} PROCESS;

typedef void (*Add) (PROCESS *head, PROCESS *new_ps);
typedef PROCESS (*Get) (PROCESS *head);

typedef struct SCHEDULER {
int quantum;
sched_t sch_alg;
Add add_process;
Get get_next_process;
} SCHEDULER;

PROCESS *fcfs_get_next_proc(PROCESS **head) { //POP
PROCESS *tmp = head;
head = tmp->next;
tmp->next = NULL;
return tmp;
}

SCHEDULER *scheduler_obj = malloc(sizeof(SCHEDULER));
scheduler_obj->get_next_process = fcfs_get_next_proc;

PROCESS *RUNNING_PROCESS = NULL;
RUNNING_PROCESS = scheduler->get_next_process(head_proc);

任何帮助将不胜感激!

最佳答案

您的 next 结构字段是一个 struct PROCESS *,并且您的函数返回一个 PROCESS。让它们的类型相同就可以了。

typedef struct PROCESS *(*Get) (PROCESS *head);
typedef PROCESS *(*Get) (PROCESS *head);

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

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