48 lines
647 B
Plaintext
48 lines
647 B
Plaintext
S = struct
|
|
{
|
|
a: u32,
|
|
b: u32,
|
|
c: u64,
|
|
d: u64,
|
|
e: u64
|
|
}
|
|
|
|
require = fn (ok: u1) void
|
|
{
|
|
if (!ok)
|
|
{
|
|
#trap();
|
|
}
|
|
}
|
|
|
|
va_arg_fn = fn [cc(c)] (first_arg: u32, ...) void
|
|
{
|
|
if (first_arg != 123456789)
|
|
{
|
|
#trap();
|
|
}
|
|
|
|
>va = #va_start();
|
|
|
|
>s = #va_arg(&va, S);
|
|
require(s.a == 5);
|
|
require(s.b == 4);
|
|
require(s.c == 3);
|
|
require(s.d == 2);
|
|
require(s.e == 1);
|
|
}
|
|
|
|
[export] main = fn [cc(c)] () s32
|
|
{
|
|
>first_arg: u32 = 123456789;
|
|
>s : S = {
|
|
.a = 5,
|
|
.b = 4,
|
|
.c = 3,
|
|
.d = 2,
|
|
.e = 1,
|
|
};
|
|
va_arg_fn(first_arg, s);
|
|
return 0;
|
|
}
|