Если у меня есть эти две структуры:
struct
{
int x;
} A;
struct
{
int x;
} B;
тогда создание A = B;
приводит к ошибке компиляции, потому что две анонимные структуры несовместимы.
Однако, если я это сделаю:
typedef struct
{
int x;
} S;
S A;
S B;
A = B;
является юридическим назначением, поскольку они совместимы.
Но почему? С typedef
я понимаю, что компилятор делает это, когда встречаются S A
и S B
:
struct { int x; } A;
struct { int x; } B;
поэтому A
и B
не должны быть совместимы...