【发布时间】:2018-07-05 14:46:22
【问题描述】:
当我尝试在结构中使用 C 函数指针时出现错误(该函数只是从链表中弹出第一个元素并返回该元素):
main.c:在“模拟”函数中:main.c:279:错误:不兼容 从“PROCESS”类型分配给“struct 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);
任何帮助将不胜感激!
【问题讨论】:
-
试试
typedef PROCESS* (*Get) (PROCESS *head); -
您的函数 PROCESS *fcfs_get_next_proc(PROCESS **head) 返回指针,但您的函数指针原型返回简单的 PROCESS。正如@Ctx 建议的那样,试试他的解决方案。
-
PROCESS *tmp = head; head = tmp->next;应该是PROCESS *tmp = *head; *head = tmp->next;
标签: c pointers function-pointers