[linux] Re: linux op laptop

Paul Slootman paul+nospam op wurtel.net
Ma Jun 5 18:07:04 CEST 2006


On Mon 05 Jun 2006, Johan Wevers wrote:
> 
> 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

Nee, sizeof(int) hoeft dus niet gelijk te zijn aan sizeof(void *).
Als je daar van uit gaat dan ben je een slechte programmeur :-P

> 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.

Lijkt mij niet handig, "int" is een "handige" grootte, het kan best zijn
dat een long langer duurt om te verwerken dan een int. Als je dus een
tellertje van 0 tot 100 hebt, daar wil jij dan per se een 64-bits
eenheid voor gebruiken?!

Met andere woorden: als je grote getallen verwacht, gebruik een long,
anders een int. Effe nadenken dus. Zouden programmeurs tegenwoordig
vaker moeten doen.

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

En zal een compiler op een bepaalde architectuur andere groottes
gebruiken dan dezelfde compiler op een ander architectuur.

> (Heel leuk als je binaries geproduceerd door verschillende compilers die
> dit verschillend hebben ingesteld wilt laten samenwerken).

Daarom is het handig als er afspraken zijn over wat een int is voor bv.
een alpha.

> >Was een paar jaar geleden meer regel dan uitzondering.
> 
> 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?

Mag nu eigenlijk ook niet. Had je een unsigned long veld voor moeten
gebruiken, heb mij weleens laten vertellen dat een pointer altijd wel
past in een unsigned long. Dat die allemaal op een IA32 systeem
toevallig 32 bits is, tja.


Paul Slootman



More information about the Linux mailing list