Ik heb in Visual Studio een testprogje gemaakt die werkt met een functie pointer.
#include "stdargs.h"
void (*pfunc)(...);
pfunc krijgt achtereenvolgend adressen van drie functies
die zo aangeroepen worden.
pfunc();
pfunc(20);
pfunc(20, "test");
Dit werkt goed.
Nu wil ik dit toepassen op een embedded ARM systeem. Hiervoor gebruik ik een ADS compiler. Deze werkt met ANSI C.
Nu geeft deze compiler een error op ... in de functiepointer declaratie.
Vervolgens laat ik de puntjes weg.
void(*pfunc)();
Nu geeft de compiler geen error meer. Ook niet op feit dat ik toch 2 functies met deze pointer aanroep, die meer parameters meekrijgen.
Ook dit werkt wel: void(*pfunc)(int,...);
Kan ANSI C wel overweg met void(*pfunc)(...); ?
Weet iemand wat ik verkeerd doe of wat de ADS compiler misschien verkeerd doet?
#include "stdargs.h"
void (*pfunc)(...);
pfunc krijgt achtereenvolgend adressen van drie functies
die zo aangeroepen worden.
pfunc();
pfunc(20);
pfunc(20, "test");
Dit werkt goed.
Nu wil ik dit toepassen op een embedded ARM systeem. Hiervoor gebruik ik een ADS compiler. Deze werkt met ANSI C.
Nu geeft deze compiler een error op ... in de functiepointer declaratie.
Vervolgens laat ik de puntjes weg.
void(*pfunc)();
Nu geeft de compiler geen error meer. Ook niet op feit dat ik toch 2 functies met deze pointer aanroep, die meer parameters meekrijgen.
Ook dit werkt wel: void(*pfunc)(int,...);
Kan ANSI C wel overweg met void(*pfunc)(...); ?
Weet iemand wat ik verkeerd doe of wat de ADS compiler misschien verkeerd doet?