Long Ausrichtung

Fr-Ro

Grünschnabel
Hallo,

mein Programm verwendet Strukturen, die wiederun Strukturen enthalten.
Die Daten nüssen auf long ausgerichtet sein.
Wie kann ich dem Borland C++ Builder 5 beibringen, daß er die Strukruren auf long ausrichtet
Mit der Daten Ausrichtung Double Word bei den Optionen ist es nicht getan
F
 
Mit dem Builder habe ich nie gearbeitet, allerdings frage ich mich, wieso es mit der Ausrichtung auf Double Word nicht getan ist. Ein Long hat 32 Bit, ein Double Word hat 32 Bit -- wo ist der Unterschied?

@Dudadida: Auf Long ausrichten heißt, dass der Compiler alle Strukturen an 4-Byte-Grenzen ausrichtet, damit die CPU schneller darauf zugreifen kann.

Gawayn
 
Das ist alles richtig und da liegt mein mein Problem, er richtet die Struckuren nicht auf 4 Byte aus.
Ein Beispiel:

struct S_CFG_COMMON
{
UCHAR Vers;
USHORT OffsDyn1;
USHORT OffsDyn2;
USHORT OffsDyn2;
ULONG CfgTimeInSec;
UCHAR Typ;

struct S_CFG_PWD
{
USHORT Rechte;
USHORT OffsDyn1;
UCHAR Level;
}Pwd[10];

}

In diesem Fall fügt er keine Füllbyte ein um auf long auszurichten, egal mit welcher Compileroption, sondern hängt sie direkt hintereinander.
Wer weiß Rat
gruß
 
Sortier deine Variablen erstmal nach Bitgröße - größte zuerst. 32bit Variablen sollten nämlich an 4byte-boundaries ausgerichtet sein, 16 bit nur an 2 byte-boundaries und 8bit brauchen gar nicht - soweit ich weiss.

und dann füg am Schluss einfach selber Paddingvariablen ein, bis die Struct wieder ein Vielfaches von 32bit hat. Damit sollte das gelöst sein.
 
Hallo auch,
Das mit den Paddingvariablen mache ich ja zur Zeit damit es geht, aber das kann ja keine Lösung sein, diese Pflege sollte schon automatisch laufen.
Gruß
 
Kennst du

Code:
#pragma pack()

findest du auch in der Builder Hilfe.

Damit kannst du Einfluß auf die Datenausrichtung nehmen

Greets
BadMourning
 
Zurück