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;