2013-03-18 34 views
5

Got the struct dữ liệu sau:struct chứa một con trỏ hàm với chính nó như là một kiểu trả về trong C

typedef struct 
{ 
    lamp *lamp; 
    unsigned char a; 
    unsigned char b; 
    unsigned char c; 
    unsigned char d; 
    unsigned char e; 
    void (*func)(struct event *); 
} event; 

Dòng cuối cùng bên trong struct được coi là một con trỏ tới một hàm với kiểu trả về khoảng trống với con trỏ đối với một sự kiện làm đối số như:

void function(event *evt); 

Mặc dù, tôi nhận được thông báo cảnh báo sau đây, có lẽ không phải là điều bạn muốn ”. Là điều này đúng hay sai?

Trả lời

7

nhu cầu struct của bạn cần phải được định nghĩa như thế này:

typedef struct event // <<< note the `event` tag here 
{ 
    lamp *lamp; 
    unsigned char a; 
    unsigned char b; 
    unsigned char c; 
    unsigned char d; 
    unsigned char e; 
    void (*func)(struct event *); 
} event;    // <<< you can still keep `event` as a typedef 
         //  which is equivalent to `struct event` 
+0

như @ Paul nói typedef struct MyStruct { [...] } AliasForMyStruct; – Gilad

+0

cảm ơn, đã giải quyết nó :) – user2182011

Các vấn đề liên quan