Un problème particulier que vous devrez peut-être surveiller (par exemple, si vos fichiers de données doivent fonctionner sur plusieurs plates-formes) est endianness.
Les nombres sont représentés différemment au niveau binaire sur différentes architectures. Les systèmes big-endian ordonnent d'abord l'octet le plus significatif et les systèmes little-endian classent d'abord l'octet le moins significatif.
Si vous écrivez des données brutes dans un fichier dans un fichier et que vous les lisez ensuite sur un système avec une endianness différente, vous aurez évidemment des problèmes.
Vous devriez être en mesure d'obtenir l'endianness à la compilation sur la plupart des systèmes de sys/param.h
. Si vous avez besoin de le détecter à l'exécution, une méthode consiste à utiliser une union d'un int
et un char
, puis définir le char
sur 1 et voir quelle valeur a le .
Considérez http://stackoverflow.com/questions/1257923/why-is-it-difficult-a-write-portable-c-programs-closed et http://stackoverflow.com/questions/61499/making- portable-code et en effet, beaucoup de http://stackoverflow.com/search?q=[c]+portable. – dmckee