Hi, On Wed, 22 Oct 2003, Ralf Corsepius wrote:
sizeof(TYPE) == sizeof(void*)
Ein integertyp, der pointer aufnehmen kann, und bei Zuweisung an pointern
den Pointer nicht aendert ist 'intptr_t' (und uintptr_t), ein C99 Typ, der
in
Hintergrund: Bit-OPs auf Adressen in Low-Level-Code ähnlich diesem Beispiel:
void *addr1; void *addr2; addr2 = (void*) (((TYPE) addr1) ^ ((TYPE) 0x0f)) ;
Das ist uebrigens so und so unportabel, egal welcher Typ benutzt wird. In ISO-C sind pointer nur so lange valide, solange sie in das selbe Objekt zeigen von dessen Addresse sie initialisiert wurden.
Oder ganz anders gefragt: Gibt es einen anderen Weg zur portablen Adressarithmetik?
Das da oben ist keine Addressarithmetik im Sinne von C. Was willst du denn damit erreichen, dass du die unteren 4 Bits in einer Addresse flipst? Ciao, Micha.