Wie ist denn 'meinefunc' deklariert?
MfG Mark
Angenommen, ich weise einem function pointer eine Funktion zu und führe sie aus, also quasi so
Wieso gibt er mir dann folgende Warnung aus?Code:void (*new_function)(void) = meinefunc; (*new_function)();
./taskcaller/taskcaller.c:73: warning: initialization from incompatible pointer type
Vielen Dank für eure Hilfe!
Wie ist denn 'meinefunc' deklariert?
MfG Mark
also void meinefunc(void);
Komisch, bei mir lässt sich der Code ohne Warnungen compillieren. Kannst Du eventuell den ganzen Code posten, vllt steckt das Problem woanders.
MfG Mark
Hast du die Deklaration (Prototyp) von meinefunc auch *vor* der Zuweisung stehen?
Disclaimer: none. Sue me.
Hallo zusammen, ich hänge nun mal meinen gesammten Code an, auch wenn er noch nicht fertig ist.
Das ganze ist ein Taskcaller, der immer verschiedene Funktionen aufrufen soll.
Edit: Nochwas: Ich verwende nicht WinAvr sondern avr-gcc(4.2.1) für Linux.
Ich hätte noch eine paar Fragen:
1. Wie sage ich dem GCC dass er alle Variablen "zentral" speichern soll. Wenn der Caller nun das mit icall aufruft, werden in den Funktionen local die Variablen gesichert. Ich möchte das ganze aber zentral, dass er alle Register vor dem icall sichert, die er noch braucht.
2. Wie sage ich dem Gcc, dass er nichtverwendete Funktionen nicht ins Flash mitnehmen soll..?
Hallo,
Wo und wie ist adress deklariert? Das sollte dann auch eine Funktion sein.Code:void (*functiontoexecute)(void)=address;
Gruß
Jens
address ist der pointer auf eine Funktion. Die Funktionsaddresse wird bei taskf_addtask mit übergeben.
Das krasse ist ja, ersetzt man address durch eine reale funktion und keinen pointer, sei es z.b. meinefunc, die existiert, kommt die gleiche Fehlermeldung. Kompiliere ich es mit AvrStudio (also WinAVR) kommt bei mir keine Fehlermeldung.
Wie kann ich die Fehlermeldung unterdrücken?
Dumme frage, aber ein pointer auf void was heißt das? Für mich heißt void kein Argument... Könnte mir das bitte jemand erklären?
Lesezeichen