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:
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