int main() {
int x;
hop(x)=4;
std::cout << x << std::endl; // affiche 4
return 0;
}
int main() {
int t[6];
hip(t,3)=5;
std::cout << t[3] << std::endl; // affiche 5
return 0;
}
b) Écrire une fonction byte_swap dont les deux arguments sont des pointeurs void*, et qui échange les valeurs des octets situés à ces adresses.
c) Écrire une fonction big_to_little dont l'argument est un long et qui inverse l'ordre des octets dans cet argument.
d) Afin de pouvoir compiler séparément les fonctions et le programme qui les teste, créer un fichier long_manip.hh qui contient uniquement les entêtes des fonctions, un fichier long_manip.cc qui contient leur définition et un fichier test.cc qui contient le code suivant:
#include"long_manip.hh"
int main() {
long a=343366337L;
byte_print(a);
big_to_little(a);
byte_print(a);
return 0;
}
Ce programme doit afficher ces deux lignes (l'ordre dépend de la machine en little ou big endian)
c1.5a.77.14 14.77.5a.c1
e) Rendre inline la fonction big_to_little.