arry über zeiger an strucktur übergeben
-
Ne enum definiert ne Aufzählung. Es ist schon was anderes als #define, weil es nicht vom Präprozessor aufgelöst wird und weil du damit neue Typen definieren kannst, also etwa:
typedef enum { eins, zwei, drei } zahl; zahl x = zwei;
Aber in diesem Fall ist die Anwendung die selbe.
-
mabusps schrieb:
oder geht die ganze idee nicht da eine strucktur nicht zwingend im speicher
hintereinander liegt?ausserdem können füllbytes in den structs stecken.
aber die kriegt man mit '#pragma pack(1)' weg.
-
Eine union funktioniert ähnlich wie eine Struktur, nur dass die Elemente jeweils auf den gleichen Speicherbereich nutzen.
Kannst du bitte auch den Quellcode zum Fehler zeigen? So ist es etwas schwer ihn zu analysieren ;).
-
pragmas sind nicht portabel; wenn du jemals auf nen anderen Compiler umsteigen willst, kannste solchen Code wegschmeißen.
-
0xdeadbeef schrieb:
pragmas sind nicht portabel;
stimmt, mit ausnahme von 'pack'. das können fast alle, selbst so exoten wie greenhills.
-
Mag sein, dass viele (nicht alle) #pragma pack können, aber du hast keine Garantie, dass es für verschiedene Compiler genau die selbe Syntax hat und sich genau gleich verhält. Sich darauf zu verlassen wäre zumindest sehr schlechter Stil - ganz abgesehen davon, dass es das das Problem mit dem Bytesex immer noch nicht löst.
-
0xdeadbeef schrieb:
ganz abgesehen davon, dass es das das Problem mit dem Bytesex immer noch nicht löst.
Wer mit Bytes Sex hat, dem ist eh nicht mehr zu helfen...
-
Hallo,
weiss jeman ob der pragma pack auch auf dem g++ zu kompilieren geht und das Gleiche Verhalten hat?
Wie könnte man pragma pack noch implementieren, um das Verhalten ohne pragma zu bekommen.
Das Problem ist, ich versteh die Bedeutung von pack (push/pop) nicht einmal wirklich :-S
-
Nach langer Suche habe ich das hier gefunden:
__attribute__ ((aligned (ALIGNMENT)))Dies soll scheinbar das Gleiche wie #pragma pack bewirken, beim gcc!
Kann das jemand bestätigen oder kennt jemand was anderes?
Danke schon Mal!
-
Also so wie ich das Sehe muss man den gcc Kram hiter jeden struct packen und kann das nicht allgemein für alle verwenden.
Oder eben durch push auf den Compilerstack packen wie mit pragma....