Forum: Mikrocontroller und Digitale Elektronik Funktions-Pointer


von Muetze (Gast)


Lesenswert?

Hallo Gemeinde,

ich glaub ich sehe den Wald vor lauter Bäumen nicht.

Im Moment bin ich dabei mich mit Funktions-Pointern zu beschäftigen.
Dabei stolpere ich über ein Problem, wenn ich einen Funktions-Pointer 
als Argument in einer Funktion übergeben möchte.
Übergebe ich den Pointer auf eine Funktion als alleiniges Argument, dann 
läuft alles so, wie ich es mir wünsche (siehe: function1).
Übergebe ich jedoch neben dem Pointer auf eine Funktion ein weiteres 
Argument, dann bekomme ich eine Fehlermeldung vom Compiler (siehe: 
function2).

"Error  2  expected ')' before numeric constant"

Da ich mit meinem Latein am Ende bin, hoffe ich, Ihr könnt mir ein wenig 
auf die Sprünge helfen.

########################################################################

#include <stdio.h>

//Typ-Definition eines Funktionspointers
typedef void (* FKTPTR) (void);

//Variablen
FKTPTR funktionsPtr;
uint8_t wert;

//Testfunktion für die Übergabe
void test(void)
{

}

//Funktion nur mit Funktionspointer als Argument
void function1(FKTPTR fctptr)
{
    //Parameter an Variablen übergeben
    funktionsPtr = fctptr;
}

//Funktion mit Funktionspointer + 2. Wert als Argument
void function2(FKTPTR fctptr, uint8_t value)
{
    //Parameter an Variablen übergeben
    funktionsPtr = fctptr;
    wert = value;
}

int main(void)
{
    //Funktionsaufruf nur mit Funktions-Pointer
    void function1(test);
    //keine Beanstandung durch den Compiler

    //Funktionsaufruf mit Funktions-Pointer + 2. Parameter
    void function2(test, 0x08);
    //Compilermeldung: "Error  2  expected ')' before numeric constant"

    while(1);
}

########################################################################

Besten Dank und Grüße
Muetze

von katastrophenheinz (Gast)


Lesenswert?

lass mal das 'void' vor den Aufrufen der Funktionen funktion1 und 
funktion2 weg. Sonst denkt der Compiler, das seien neue (lokale) 
Funktionsdeklarationen

von Muetze (Gast)


Lesenswert?

Moin  katastrophenheinz,

sollte es wirklich so einfach sein ;-)

Was für ein blöder Fehler von mir!

Besten Dank.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.