簡體   English   中英

C,指向結構中函數的指針,警告“從不兼容的指針類型賦值”

[英]C, pointer to function in struct, warning “assignment from incompatible pointer type”

我有一個定義如下的結構:

typedef struct {
    char (*behave) (int*);
} BEHAVIOURSTRUCT;

這個結構在 .h 文件中定義,它包含在 .c 文件中我有一個全局變量(MAX_BEHAVIOURS 定義為 3):

BEHAVIOURSTRUCT bhvr[MAX_BEHAVIOURS];

在初始化中我嘗試分配它,但在這里我收到警告:“從不兼容的指針類型分配”

void init() {
bhvr[0].behave = BHVR_line_follow; // here
...
}

我試圖分配的功能

void BHVR_line_follow(int *currstate){
....
}

聽起來我在結構中的聲明和指向函數的指針不是來自同一個構建,但在我看來它們是。 但很可能我錯了。

這是您的函數和所需的函數類型,並排:

void BHVR_line_follow(int *currstate)
char (*behave) (int*)

所需的函數類型采用int*並返回一個char
你的函數需要一個int*並返回void (什么都沒有)。

總結一下, BHVR_line_follow的返回類型是錯誤的。

暫無
暫無

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

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