PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Funktionspointer mit struktur als parameter in struktur?



Linuxhippy
12-04-2009, 15:33
Hi,

Habt ihr eine Idee wie man folgendes Problem einigermaßen elegant lößen könnte:


typedef struct GlyphInfo {
void (* removeCellInfos)(GlyphInfo *);
} GlyphInfo;


Der Compiler kennt GlyphInfo natürlich noch nicht, zum Zeitpunkt wo der Funktionspointer definiert wird :-/

Danke im Voraus

Yonibear
12-04-2009, 15:37
Die struct an sich kennt der Compiler schon, nur das typedef, dass dazu da ist, das struct-Keyword automatisch zu übernehmen aber noch nicht. Wenn du das explizit hinschreibst geht es:


void (* removeCellInfos)(struct GlyphInfo *);

Linuxhippy
12-04-2009, 18:52
Super, danke :)

panzi
14-04-2009, 00:57
Auch eine Möglichkeit wäre folgendes:


struct GlyphInfo;
typedef struct GlyphInfo GlyphInfo;

struct GlyphInfo {
void (*removeCellInfos)(GlyphInfo *);
};


Hierbei verwendest du dann tatsächlich das typedef im Parameter, und nicht die struct (ist aber eh äquivalent).

Wobei gcc frisst auch das (beides mit -ansi -pedantic -Wall), weis aber net ob das so standardkonform ist:


typedef struct GlyphInfo GlyphInfo;

struct GlyphInfo {
void (*removeCellInfos)(GlyphInfo *);
};