Endianness Work-around Necessário

Considere o seguinte trecho de código:

#include "stdio.h"

typedef struct CustomStruct
{
  short Element1[10];
}CustomStruct;

void F2(char* Y)
{
  *Y=0x00;
  Y++; 
  *Y=0x1F;    
}

void F1(CustomStruct* X)
{
  F2((char *)X);
  printf("s = %x\n", (*X).Element1[0]);
}

int main(void)
{
  CustomStruct s;
  F1(&s);

  return 0;
}

Em tempo de execução, até o final de chamar a funçãoF1, Obtenho resultados diferentes usando diferentes compiladores.

(*X).Element1[0] = 0x1f00 em algum compilador e(*X).Element1[0] = 0x001f com outro.

Está claro para mim que é uma questão de endianness.

Existe alguma opção de compilador ou work-around para usar para que eu obtenha(*X).Element1[0] = 0x001f independentemente do compilador usado?

questionAnswers(2)

yourAnswerToTheQuestion