quakeforge/tools/qfcc/test/anonstruct.r

53 lines
930 B
R
Raw Normal View History

void printf (string fmt, ...) = #0;
typedef struct xyzzy_s {
int magic;
} xyzzy_t;
typedef struct anon_s {
int foo;
int id;
struct {
int bar;
int baz;
};
union {
int snafu;
float fizzle;
};
} anon_t;
int foo (float f)
{
anon_t anon;
anon.fizzle = f;
return anon.snafu;
}
int main()
{
anon_t anon;
int ret = 0;
if (&anon.snafu != &anon.fizzle) {
printf ("anon union broken: %p %p\n",
&anon.snafu, &anon.fizzle);
ret |= 1;
}
if (&anon.snafu - &anon.baz != 1) {
printf ("snafu and baz not adjacant: snafu:%p baz:%p\n",
&anon.snafu, &anon.baz);
ret |= 1;
}
if (&anon.baz - &anon.bar != 1) {
printf ("baz and bar not adjacant: baz:%p bar:%p\n",
&anon.baz, &anon.bar);
ret |= 1;
}
if (&anon.bar - &anon.id != 1) {
printf ("bar not after id: bar:%p id:%p\n",
&anon.bar, &anon.id);
ret |= 1;
}
return ret;
}