Bonjour à tous
En parcourant le code du moteur OpenSceneGraph, je suis tombé sur la fonction permettant de détecter l'endianness de la machine, en voici une version légèrement modifiée
Sur ma machine u.is_it_really_1 vaut 256 alors qu'il n'a pas été initialisé. Je ne vois pas non plus l'intérêt d'utiliser big_endian_1 (de plus c'est un tableau).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 const char* getCpuByteOrder() { union { char big_endian_1[2]; short is_it_really_1; } u; u.big_endian_1[0] = 0; u.big_endian_1[1] = 1; printf("%i\n", u.is_it_really_1); if (u.is_it_really_1 == 1) return "bigEngian"; else return "littleEndian"; }
Comment fonctionne cette fonction ? Le type des variables est-il important ? Pourquoi utiliser une union ?
Kromagg
Partager