- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 4 von 4

Thema: structs und Funktionspointer

  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    41
    Beiträge
    1.780

    structs und Funktionspointer

    Anzeige

    E-Bike
    Hallo Leute,

    ich frage mich gerade wie sich folgendes Konstrukt am sinnvollsten in C umsetzen lässt:

    Code:
    typedef struct
    {
    	type_B B;
    } type_A;
    
    typedef uint8_t (type_B*)(type_A*);
    Das Problem dabei ist natürlich, daß egal in welcher Reihenfolge diese beiden Deklarationen in der .h Datei stehen, sich dieser Code nicht kompilieren lässt (im dargestellten Fall wird type_B benutzt bevor er deklariert wurde, und wenn man die beiden Deklarationen vertauscht ist es eben type_A).

    Ich könnte natürlich den Funktionspointer umbauen, und als Parameter ein void* verwenden, aber die Lösung gefällt mir wegen der fehlenden Typprüfung nicht besonders.
    So viele Treppen und so wenig Zeit!

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Sowas?

    Code:
    /* Definition */
    
    struct type_A;
    
    typedef char (*type_B)(struct type_A*);
    
    typedef struct type_A
    {
       type_B B;
    } type_A;
    
    /* Anwendung */
    
    char fooB (type_A*);
    
    type_B b = fooB;
    type_A a = { fooB };
    
    char dispatch (type_A *a)
    {
        return a->B (a) + B(a);
    }
    Disclaimer: none. Sue me.

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    im Beispiel muss es natürlich heissen "+b(a)" anstatt "+B(a)"
    Disclaimer: none. Sue me.

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    41
    Beiträge
    1.780
    Ah, danke...

    manchmal sieht man halt den Wald vor lauter Bäumen nicht
    So viele Treppen und so wenig Zeit!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen