Deklaration eines Datentyps



  • Hallo,
    was ist bloss an dem quellcode (siehe unten) nicht richtig, damit man den Speicherbereich entweder als char- Variable oder als Feld mit einzelnen Bits ansprechen kann ???

    hie die Fehlermeldung:

    Kompilierung läuft...
    neu.cpp
    D:\oberhammer\neu.cpp(9) : error C2143: Syntaxfehler : Fehlendes ';' vor '<class-head>'
    D:\oberhammer\neu.cpp(10) : error C2143: Syntaxfehler : Fehlendes ';' vor 'constant'
    D:\oberhammer\neu.cpp(10) : error C2059: Syntaxfehler : 'constant'
    D:\oberhammer\neu.cpp(10) : error C2334: Unerwartete(s) Token vor ':'; sichtbarer Funktionsrumpf wird übersprungen
    D:\oberhammer\neu.cpp(26) : fatal error C1004: Unerwartetes Dateiende gefunden
    Fehler beim Ausführen von cl.exe.
    

    hier der Quelltext:

    #include <stdio.h>
    
    int main(){
    
    union
    {char buchstabe; 
    
    struct{
    unsigned bit 0:1; 
    unsigned bit 1:1;
    unsigned bit 2:1;
    unsigned bit 3:1;
    unsigned bit 4:1;
    unsigned bit 5:1;
    unsigned bit 6:1;
    unsigned bit 7:1;
    }}buchstabeBit; 
    
    buchstabeBit neinVar ='a';
    printf("%d\n", neinVar, bit 0);
    
    return 0;
    }
    


  • launebaer schrieb:

    unsigned bit 0:1;
    

    soll "bit 0" ein Bezeichner sein? Dann nimm das Leerzeichen raus.

    launebaer schrieb:

    union
    {
    [...]
    }buchstabeBit; 
    
    buchstabeBit neinVar ='a';
    

    Du deklarierst einen Typ namens "union buchstabeBit", versuchst dann aber ueber "buchstabeBit" zuzugreifen. Das geht nicht.



  • Und bitte

    printf("%d\n", neinVar, bit 0);
    

    Auf die Untertypen greift man so zu (angenommen die Dinger heißen bit0 bis bit7):

    printf("%d\n", neinVar.bit0);
    


  • Ok.

    müsste hier eigentlich noch ein ; in der letzten Zeile eingefügt werden ???

    .
    .
    unsigned bit 7:1; 
    }}buchstabeBit;
    

Anmelden zum Antworten