Les types à taille fixe évitent les problèmes de différence de taille, pas les problèmes de boutisme (endianness). Ces derniers sont résolus par une sérialisation des types octet par octet (plutôt qu'envoyer directement la réprésentation mémoire de la variable).
Pour ce qui est des types à taille fixe c'est très simple, il suffit de tester des symboles pré-processeur bien choisis qui permettent d'orienter le typedef vers l'un ou l'autre type natif qui va bien.
#ifndef MSVC
typedef Uint64 unsigned long long;
#else
typedef Uint64 __uint64;
#endif
(exemple fictif mais proche de la réalité)
Ceci-dit, en pratique, on peut bien souvent largement simplifier ces règles, comme SFML le fait.