Compatibilidade do ponteiro de estrutura

uponhamos que temos duas estrutura

typedef struct Struct1
{
    short a_short;
    int id;
} Struct1;

typedef struct Struct2
{
    short a_short;
    int id;
    short another_short;
} Struct2;

É seguro transmitir a partir deStruct2 * paraStruct1 *? O que a especificação ANSI diz sobre isso? Eu sei que alguns compiladores têm a opção de reordenar campos de estruturas para otimizar o uso de memória, o que pode tornar as duas estruturas incompatíveis. Existe alguma maneira de garantir que esse código seja válido, independentemente do sinalizador do compilador?

Obrigado

questionAnswers(6)

yourAnswerToTheQuestion