mirror of
https://github.com/nArnoSNES/tcc-65816.git
synced 2024-06-12 13:29:29 +00:00
51 lines
762 B
C
51 lines
762 B
C
|
|
typedef typeof(sizeof(char)) Size_t;
|
|
|
|
#define bufsize ((1L << (8 * sizeof(Size_t) - 2))-256)
|
|
|
|
struct huge_struct
|
|
{
|
|
short buf[bufsize];
|
|
int a;
|
|
int b;
|
|
int c;
|
|
int d;
|
|
};
|
|
|
|
union huge_union
|
|
{
|
|
int a;
|
|
char buf[bufsize];
|
|
};
|
|
|
|
unsigned long union_size()
|
|
{
|
|
return sizeof(union huge_union);
|
|
}
|
|
|
|
unsigned long struct_size()
|
|
{
|
|
return sizeof(struct huge_struct);
|
|
}
|
|
|
|
unsigned long struct_a_offset()
|
|
{
|
|
return (unsigned long)(&((struct huge_struct *) 0)->a);
|
|
}
|
|
|
|
int main()
|
|
{
|
|
/* Check the exact sizeof value. bufsize is aligned on 256b. */
|
|
if (union_size() != sizeof(char) * bufsize)
|
|
abort();
|
|
|
|
if (struct_size() != sizeof(short) * bufsize + 4*sizeof(int))
|
|
abort();
|
|
|
|
if (struct_a_offset() < sizeof(short) * bufsize)
|
|
abort();
|
|
|
|
return 0;
|
|
}
|
|
|