Je viens de découvrir une autre base de code au travail où les développeurs utilisent systématiquement l'adresse du premier élément des structures lors de la copie/comparaison/réglage, plutôt que la structure elle-même. Voici un exemple simple.
Il y a d'abord un type de structure :
typedef struct {
int a;
int b;
} foo_t;
Ensuite, il y a une fonction qui fait une copie d'une telle structure :
void bar(foo_t *inp)
{
foo_t l;
...
memcpy(&l.a, &inp->a, sizeof(foo_t));
...
}
Je n'écrirais pas moi-même un appel à memcpy
de cette façon et j'ai commencé à soupçonner que les développeurs originaux n'avaient tout simplement pas bien compris les pointeurs et les structures en C. Cependant, maintenant, j'ai vu cela dans deux bases de code sans rapport, sans développeurs communs, donc je commence à douter de moi-même.
Pourquoi vouloir utiliser ce style ?