Ответ 1
Нет никакого хорошего способа для компилятора для реализации сравнения структуры (т.е. поддерживать оператор == для структур), что согласуется с С низким уровнем вкуса. Просто сравнение по байтам может быть основано на случайных битах, присутствующих в неиспользуемых "дыры" в структуре (такие прокладка используется для поддержания выравнивания более поздних полей). Для сравнения в полевых условиях может потребоваться недопустимое количество повторяющийся код для больших структур. Любое сравнение с компилятором нельзя было ожидать сравнения поля указателей соответственно во всех случаев: например, часто подходящий для сравнения полей char * с strcmp, а не ==.
Если вам нужно сравнить две структуры, вам придется написать свою собственную функцию для этого, поле по полю.