सी

2013-03-18 3 views
5

में एक वापसी प्रकार के रूप में खुद के साथ एक समारोह सूचक युक्त struct निम्न डेटा struct समझे:सी

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

struct के अंदर अंतिम पंक्ति सूचक के साथ वापसी प्रकार शून्य के साथ एक समारोह के लिए एक सूचक माना जाता है एक तर्क के रूप में एक घटना के लिए जैसे:

void function(event *evt); 

हालांकि, मैं निम्न चेतावनी संदेश प्राप्त: "इसके दायरे केवल इस परिभाषा या घोषणा है, जो शायद नहीं है तुम क्या चाहते है।" क्या यह सही है या गलत?

उत्तर

7

आपका struct की जरूरत है इस तरह परिभाषित करने की आवश्यकता:

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

तरह @Paul कहा typedef struct MyStruct { [...] } AliasForMyStruct; – Gilad

+0

धन्यवाद, इसे हल किया :) – user2182011