Martial Demolins (./58) :
Ouep, mais c'est pareil non, c'est pas un pointeur sur 4 octets?
Le C est (relativement) type safe, il ne fonctionne pas comme l'assembleur (où 4 octets sont 4 octets).
De plus, je te signale que
long ne fait pas toujours 4 octets, ce sont 8 octets sur x86_64.
PpHd (./69) :
Sur win64 la taille d'un unsigned long est différente d'un pointeur
Oui, et ça casse pas mal de programmes ça. Sous GNU/Linux, un pointeur rentre toujours dans un
unsigned long, et il y a des logiciels qui utilisent ça (mais pas comme essayait de le faire Martial, les types ne sont évidemment pas interchangeables). Cela dit, c'est crade, le standard C99 prévoit le type
ptrint_t pour ça. Mais comme peu de programmes utilisent le C99...

kim (./61) :
" Impérativement, au moins un switch d'optimisation (-Os, -O2 ou -O3). "C'est bien, mais largement pas impératif.
Euh si...
-O0 (le mode par défaut) génère du code exécrable (gros et rame à fond), c'est inutilisable sauf à la limite pour pouvoir déboguer plus facilement (mais il y a pas mal de travail effectué dans GCC et GDB pour pouvoir déboguer convenablement un programme optimisé, donc même là,
-O0 sert rarement).
En revanche, ce qu je trouverais plutôt impératif, moi, c'est le -WAll, et après, ne rien laisser passer
-Wall, pas
-WAll Sally (./65) :
sinon moi en général je mets -W -Wall (il y a des warnings bien pratiques dans -W aussi)
C'est obsolète
-W, dans les GCC récents, c'est
-Wextra (mais
-W est toujours accepté pour des raisons de compatibilité antérieure).
Sinon, je conseille aussi
-Wwrite-strings (c'est aussi mis par défaut dans TIGCC).