Я только что нашел еще одну базу кода на работе, где разработчики последовательно используют адрес первого элемента structs при копировании/сравнении/настройке, а не в самой структуре. Вот простой пример.
Сначала введите тип структуры:
typedef struct {
int a;
int b;
} foo_t;
Тогда существует функция, которая создает копию такой структуры:
void bar(foo_t *inp)
{
foo_t l;
...
memcpy(&l.a, &inp->a, sizeof(foo_t));
...
}
Я бы сам не написал вызов memcpy
таким образом, и я начал с подозрения, что оригинальные разработчики просто не совсем поняли указатели и структуры на C. Однако теперь я видел это в двух несвязанные базы кода, без общих разработчиков, поэтому я начинаю сомневаться в себе.
Почему нужно использовать этот стиль?