012
15.05.2006, 23:43 Uhr
~MarkusT
Gast
|
Zitat von FloSoft: |
in der WinAPI sind sowieso noch mehr Datentypen definiert, WORD, DWORD, usw, da diese sich ja rein theoretisch auch mal ändern KÖNNTEN, und so nur das "zeug" neukompiliert werden muss, nicht alles umgeschrieben. Das gleiche gilt ja auch für die *_t-Typen, strlen_t, pid_t usw, könnte ja sein das sich der typ mal ändert, und dann gibts keine Probleme wenn man diesen Typ nimmt.
(Auch wenn das wohl bei BOOL so gewesen ist das sie halt aus Faulheitsgründen einfach
C++: |
#define TRUE 1 #define FALSE 0 typedef int BOOL;
|
gemacht haben und nicht irgendwas komplexeres
|
Ja das dürfte richtig sein. Wozu sollte man sich auch krampfhaft etwas abbrechen wollen wenn das auch auf einfach Weise sicher funktioniert .
Zitat von FloSoft: |
das macht imho auch nix anderes als 1 für true und 0 für false zu nehmen, da wird nix maskiert
0000 0000 -> 0 / false 0000 0001 -> 1 / true
Da musste nix maskieren
|
Leider etwas ungeschickt ausgedrückt. Mir maskieren meinte ich den Speicher in einen definierten Zustand bringen um im Falle von TRUE oder FALSE dies effektiv zu setzen. Die Speicheradresse enthält ja zu Beginn einen undefinierten Wert -> & 0x8F usw. .
Zitat von FloSoft: |
Da nun mal die kleinste Adressierbare Einheit bei unseren Rechnern 1 Byte entspricht (obwohl 1 Byte nicht umbedingt 8 Bit bedeutet, kann dir auch unterkommen das es nur 4 oder 7 oder sogar 16 Bit hat), hat man dies eben für den eigentlich 1bittigen Datentyp benutzt, WinAPI benutzt eben einen int, da dies dann irgendwo schon ne 2^n adresse erzeugt, wodurch zusätzliches alignment wegfällt. Kann dir z.b auch bei C++ dann vorkommen das du dann zwar bool schreibst (imho sizeof(bool) == 1?) und dann im entgültigen Programm die Variable trotzdem 4 byte belegt, 3 davon ungenutzt und ignoriert, da er eben z.b auf 4 byte/32bit aligned.
|
Jo, das schrieb ich bereits im Vorposting. Neu ist mir allerdings die Tatsache das 1 Byte auch mehr oder weniger als 8 BIT sein kann. Ist der Speicher tatsächlich so tolerant ausgelegt?
Gruß Markus |