次のコードを検討してください。
#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;
}
実行時、関数の呼び出しが終了するまでに、F1
さまざまなコンパイラを使用することでさまざまな結果が得られます。
(*X).Element1[0] = 0x1f00
一部のコンパイラと(*X).Element1[0] = 0x001f
別のコンパイラで。
それがエンディアンの問題であることは明らかです。
使用するコンパイラに関係なく取得できるように、使用するコンパイラ オプションまたは回避策はあります(*X).Element1[0] = 0x001f
か?