S
sxzong
I have written a C program under unix, but some weird errors occurred:
====================================================
#include <stdio.h>
typedef unsigned long ULONG;
typedef unsigned short UWORD;
typedef unsigned char UBYTE;
typedef unsigned char BOOLEAN;
typedef struct
{
UBYTE i1;
UBYTE i2;
UWORD i3;
ULONG i4;
}TEST;
int main(void)
{
UBYTE temp[20] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
UBYTE *temp1 = temp + 2;
UWORD *temp2 = (UWORD*)temp1;
UWORD * temp3 = (UWORD*)(temp+2);
ULONG * temp4 = (ULONG*)(temp+2);
TEST *temp5 = (TEST*)(temp+2);
printf("temp2 value: %xh\n", temp2[0]); // 203h
printf("temp3 value: %xh\n", temp3[0]); // 203h
printf("temp4 value: %xh\n", temp4[0]); // Bus error
printf("temp5 i1 value: %xh\n", temp5->i1); // 2h
printf("temp5 i2 value: %xh\n", temp5->i2); // 3h
printf("temp5 i3 value: %xh\n", temp5->i3); // 405h
printf("temp5 i4 value: %xh\n", temp5->i4); // Bus error
return 0;
}
====================================================
Thanks,
Tim
====================================================
#include <stdio.h>
typedef unsigned long ULONG;
typedef unsigned short UWORD;
typedef unsigned char UBYTE;
typedef unsigned char BOOLEAN;
typedef struct
{
UBYTE i1;
UBYTE i2;
UWORD i3;
ULONG i4;
}TEST;
int main(void)
{
UBYTE temp[20] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
UBYTE *temp1 = temp + 2;
UWORD *temp2 = (UWORD*)temp1;
UWORD * temp3 = (UWORD*)(temp+2);
ULONG * temp4 = (ULONG*)(temp+2);
TEST *temp5 = (TEST*)(temp+2);
printf("temp2 value: %xh\n", temp2[0]); // 203h
printf("temp3 value: %xh\n", temp3[0]); // 203h
printf("temp4 value: %xh\n", temp4[0]); // Bus error
printf("temp5 i1 value: %xh\n", temp5->i1); // 2h
printf("temp5 i2 value: %xh\n", temp5->i2); // 3h
printf("temp5 i3 value: %xh\n", temp5->i3); // 405h
printf("temp5 i4 value: %xh\n", temp5->i4); // Bus error
return 0;
}
====================================================
Thanks,
Tim