Una cuestión particular que puede que tenga que mantenerse al tanto de (por ejemplo, si se espera que los archivos de datos para trabajar en todas las plataformas) es endianness.
Los números se representan de forma diferente en el nivel binario en diferentes arquitecturas. Los sistemas Big-Endian piden los bytes más significativos primero y los sistemas little-endian piden primero el byte menos significativo.
Si escribe algunos datos sin procesar en un archivo en una endianness y luego vuelve a leer ese archivo en un sistema con una endianidad diferente, obviamente tendrá problemas.
Debería poder obtener el endianness en tiempo de compilación en la mayoría de los sistemas desde sys/param.h
. Si necesita detectarlo en tiempo de ejecución, un método es usar una unión de int
y char
, luego establecer char
en 1 y ver qué valor tiene el int
.
Considere http://stackoverflow.com/questions/1257923/why-is-it-difficult-to-write-portable-c-programs-closed y http://stackoverflow.com/questions/61499/making- código portátil y, de hecho, gran parte de http://stackoverflow.com/search?q=[c]+portable. – dmckee