簡體   English   中英

C結構中的函數指針

[英]Function pointers in a C struct

當我嘗試在結構內部使用C函數指針時出現錯誤(該函數只是將第一個元素從鏈接列表中彈出並返回該元素):

main.c:在函數'simulation'中: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);

任何幫助將非常感激!

您的next struct字段是struct PROCESS * ,您的函數返回一個PROCESS 使它們具有相同的類型,它將起作用。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM