Hallo zusammen,
darf ich das hier fragen, geht ja nicht direkt um ATMEL aber ich denke mal es betrifft alle C-Compiler...
Laut Hilfe kann ich mit der Direktive #pragma pack(1) dem Compiler mitteilen, daß er meine Daten entsprechend dem Klammerausdruck packen soll.
Also wen ich pack(1) angebe müsten die Daten meiner Meinung nach Byteweise gepackt werden. Damit keine unnötigen Löcher im Speicher entstehen.
Wenn ich mir den Mapfile ansehe wird für meine angelegten Variablen aber trotzdem mehr Speicher reserviert als nötig.
Dazu ein Beispiel:
#pragma pack(1) /* align the structure to bytes */
char name[5]
#pragma pack() /* end of packed structure */
Für meine Variable "name" werden laut Mapfile 8 Bytes statt 5 reserviert.
Wenn ich die sizeof Funktion benutze, wird aber korrekterweise 5 zurückgeliefert. Warum reserviert er dann 8 Bytes ? Das wollte ich doch durch pack(1) verhindern.
Ist das bei anderen Compilern auch so, oder habe ich die pack direktive vielleicht nicht richtig verstanden ?
Für Informationen wäre ich Euch dankbar.
Siro
Lesezeichen