2013-03-18 13 views
5

uzyskałem następujący struct danych:struct zawierający wskaźnik funkcji z samym sobą jako typ zwracany w 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; 

Ostatnia linia wewnątrz struktury ma być wskaźnik do funkcji z Zwraca typ pustki wskaźnikiem do zdarzenia jako argument takich jak:

void function(event *evt); 

jednak, pojawia się następujący komunikat ostrzegawczy: „jego zakres jest tylko ta definicja lub deklaracji, co nie jest chyba to, co chcesz”. Czy to dobrze, czy źle?

Odpowiedz

7

Twoich potrzeb struct musi być zdefiniowana tak:

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

jak @Paul powiedział typedef struct MyStruct { [...] } AliasForMyStruct; – Gilad

+0

dzięki, rozwiązany :) – user2182011

Powiązane problemy