Причиной того, что структуры не могут быть проверены на равенство в C, является наличие свободных байтов, что делает сравнение невозможным.
Но если я использую пакет #pragma (1), который удаляет свободные байты, тогда сравнение должно выполняться плавно, но оно все равно дает ошибку при сравнении.
Пример кода
#include<stdio.h>
#pragma pack(1)
struct person
{
int uid;
char nameStart;
};
struct personDupe
{
int uid;
char nameStart;
};
int main()
{
struct person var;
struct personDupe varDupe;
printf("\nSize of person : %3d\n",sizeof(var));
printf("\nSize of personDupe : %3d\n",sizeof(varDupe));
var.uid = 12;
var.nameStart = 'a';
varDupe.uid = 12;
varDupe.nameStart = 'a';
if(var == varDupe) //Error is introduced
printf("\nStructures are equal\n");
return 0;
}
#pragma pack
, это не переносимо и вызывает всевозможные проблемы. - person fuz   schedule 28.08.2015