Kleines Problem mit der Union



  • Hallo,
    ich bin gerade debei mir eine Strktur für die Werte uebernahme eines Mikrocontrollers in C zusammenzubasteln.

    Vllt. koennte mir jemand mit meinem kleine Problem helfen.

    typedef struct
    {
     /* 40 einzelne Bits ... symbolisieren einen SPI-Bus*/  
    }SPI_BUS;
    
    typedef union
    {
      unsigned short  u_short[6]; //Der komplette Bus wird 2x benötigt
      SPI_BUS         relais_a;
      SPI_BUS         relais_b[2];  //Zur ansteuerung einzelner Bits
                                   //zweimal deshalb um uerbschreibung durch 
                                   //relais_a zu verhindern
    } ANSTEUERUNG;
    
    ANSTEUERUNG relais_obj;
    
    void fehlerfunktion(name, relais_name)
    {
      relais_obj.relais_b[1].relais_name = ....
    }
    

    Leider bekiomme ich beim kompilieren stets die fehlermeldung:

    compiling cc_test.c...
    C\cc_test.c(140): error C200: left side of '.' requires struct/union
    

    Der verwendete Kompiler ist KEIL µVision 4.

    Schonmal vielen Dank im Vorraus für die Hilfe.

    Mit freundlichem Gruß
    Die "olle" Eule

    EDIT:
    Wirklich "V o r r a u s" wird zensieert?! -Interessant- 🙂



  • Dieser Thread wurde von Moderator/in volkard aus dem Forum C++ (auch C++0x) in das Forum C (C89 und C99) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Gibt es denn ein relais_name in SPI_BUS?

    Von welchem Typ sind name und relais_name bei void fehlerfunktion(name, relais_name) ?

    Bitte poste minimalen, compilierbaren Code



  • Die Eule schrieb:

    EDIT:
    Wirklich "V o r r a u s" wird zensieert?! -Interessant- 🙂

    Dann schau mal im Duden nach warum.



  • Hallo, das Problem hat sich wunderbar gelöst 🙂
    Ein kleine Kommentarzeile war in ein Makro gerutscht, welches wie folgt lautet.

    #define ERR_FUN(o_name, var) \
            static void o_name (void) {ANSTEUERUNG.relay_a[1].var = TRUE;}
    

    Das Die kommentarzeile in der selben Zeile wie das '\' angelegt war, wurde die folgende Zeile nicht mehr als zum Makro dazugehörig interpretiert, weshlab dann auch 'var' nicht als Platzhalter des Makros sondern als eingenständige Variable interptretiert wurde.

    Somit besteht das Problem nicht mehr, trotzdem vielen dank für die schnelle Hilfe.

    MfG
    Eule

    PS.: Voraus zensiert weil mit zwei 'r' ?! Übersehe ich etwas?! Ist doch weder ein "Schimpfwort" noch eine Beleidigung, oder?

    PPS.: Was den Duden angeht.

    Zitat:
    "Wendungen, Redensarten, Sprichwörter
    im /(besonders schweizerisch:) zum Voraus (schon vorher: besten Dank im Voraus; die Miete im Voraus bezahlen)"


Anmelden zum Antworten