funktionsptr innerhalb von struct
-
Hi,
hab ein Problem mit einem Funktionspointer: bekomm die Fehlermeldung "Fcnt" is not a member of _index
index.h
struct _index { unsigned int id; void (*Fcnt)(); };
index.c
#include "tabelle.h" #include "index.h" struct _index Index[] = { {1, (void (*)())0}, {2, (void (*)()) TblFnct) }; //in einer function in index.c versuch ich auf die fkt zuzugreifen if(Index[1].Fcnt(1, (unsigned short *)0)!= 0) return 1;
tabelle.h
//funktionsdefinition unsigned short TblFnct(unsigned short row, unsigned short *error);
Der Zugriff auf die ID funktioniert einwandfrei. Leider verstehe ich die Fehlermeldung nicht ganz, da ja der Funktionspointer in _index deklariert ist.
mfg
max
-
Mach Dir einen typedef für Deinen FctPtr. Dann sollte es gehen.
-
wie du siehst, hat die eine funktion 2 parameter, die andere hat keinen parameter
-
max baumgartner schrieb:
//funktionsdefinition unsigned short TblFnct(unsigned short row, unsigned short *error);
aber der function pointer in der struct ist vom typ: void ()()*
das passt nicht zusammen.
probier mal: unsigend short (*Fcnt)(unsigned short, unsigned short*)
-
btw muss sowas immer ohne typedefs funktionieren
-
btw+ schrieb:
btw muss sowas immer ohne typedefs funktionieren
hab jetzt ein typedef angelegt, jedoch immer noch der gleich fehler
index.h
typedef unsigned short (*FnctPtr)(unsigned short, unsigned short *);
struct _index { unsigned int id; FnctPtr Fcnt; };
#include "tabelle.h" #include "index.h" struct _index Index[] = { {1, (FnctPtr)0}, {2, (FnctPtr) TblFnct) }; //in einer function in index.c versuch ich auf die fkt zuzugreifen if(Index[1].Fcnt(1, (unsigned short *)0)!= 0) return 1;
gruß
max
-
ok, jetzt funktioniert es; hatte noch einen Dreher drinnen bei Fcnt / Fnct...
vielen dank für eure Hilfe
max