On Mon, Jun 05, 2006 at 02:02:59PM +0200, Johan Wevers wrote:
> Hugo van der Kooij wrote:
> 
> >Tja. Heb je wel eens gekeken hoe vaak nog een pointer met een integer
> >wordt verwisseld?
> 
> Is sizeof(int) onder gcc dan niet 64 op een 64 bits systeem, net als
> sizeof(void*)? Anders zit je nog te klooien met allerlei beperkingen
> zoals 32 bit overflows en heb je niet zoveel aan een 64 bit systeem.
> Kun je een :%s/int/long/g draaien op je sources en dan alle unsigned
> zonder int erachter opzoeken.
Nee, sizeof(int) = 4 en sizeof(long) = 8 op een 64-bit systeem. In C
heb je maar een paar types voor getallen:

char   = 1 byte
short  = 2 bytes
int    = 4 bytes
long   = 4 bytes op 32-bit of 8 bytes op 64-bit

Als je int 8-bytes zou maken zou er helemaal niks over blijven dat
4-bytes is.

> Zowiezo zijn de grootte van int en void* compiler defined, niet CPU
> defined, al zijn er natuurlijk waarden die op bepaalde architecturen
> efficienter werken.

Natuurlijk, maar de CPU en compiler moeten wel op dezelvde pagina zijn
want je kan niet (makkelijk) zien van een stuk code of het 32 or 64 bit
code is.

> Hmmm. Ik wil onder win32 progs nogal eens een pointer in een int veld
> opslaan (voor de Borland kenners: in het Tag veld van VCL componenten).
> Mag dat straks niet meer?

Definieer die veld als long of void* en je probleem is opgelost.

int <-> void* mag allang niet meer...

Have a nice day,
-- 
Martijn van Oosterhout   <kleptog@svana.org>   http://svana.org/kleptog/
> From each according to his ability. To each according to his ability to litigate.

-- Attached file included as plaintext by Ecartis --
-- File: signature.asc
-- Desc: Digital signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)

iD8DBQFEhFKTIB7bNG8LQkwRAsCzAJ4nPv0QGeGwE/pcZBhXl/+DEydgqgCfWsRe
H6fzbxL+jzezTb+XfElt7aU=
=Dgxg
-----END PGP SIGNATURE-----



