Questi sono per indipendenza dalla piattaforma.
size_t
è, per definizione, il tipo restituito da sizeof
. È abbastanza grande da rappresentare l'oggetto più grande sul sistema di destinazione.
Non molti anni fa, 32 bit sarebbe stato sufficiente per qualsiasi piattaforma. 64 bit sono sufficienti oggi. Ma chissà quanti bit saranno necessari tra 5, 10 o 50 anni da adesso?
Scrivendo il codice non preoccuparsi - vale a dire, utilizzare sempre size_t
quando si intende "dimensione di un oggetto" - è possibile scrivere codice che effettivamente compilare ed eseguire 5, 10, o 50 anni da oggi. O almeno hai una possibilità di combattere.
Usa i tipi per dire cosa intendi. Se per qualche motivo hai bisogno di un numero specifico di bit (probabilmente solo quando si ha a che fare con un formato definito esternamente), usa un tipo specifico per dimensione. Se vuoi qualcosa che è "la naturale dimensione della parola della macchina" - cioè, veloce - usa int
.
Se avete a che fare con una programmatica come sizeof
o strlen
, utilizzare il tipo di dati appropriato per l'interfaccia, come size_t
.
E non tentare mai di assegnare un tipo a un altro a meno che non sia abbastanza grande da contenere il valore per definizione.
'puoi scrivere codice che verrà compilato ed eseguito in 5, 10 o 50 anni da adesso' +1 per l'ottimismo :-) – Praetorian
Beh, non in C, ma ho il codice che è stato scritto nel 1996 e ancora compila e piste. 15 anni! –