From 1f72464c6451fcff16180d00af537225acc9b83c Mon Sep 17 00:00:00 2001 From: lemon Date: Sun, 23 Nov 2025 12:02:27 +0100 Subject: implement float varargs, and some other fixes --- test/10-varargs.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'test/10-varargs.c') diff --git a/test/10-varargs.c b/test/10-varargs.c index c15b887..a3715ab 100644 --- a/test/10-varargs.c +++ b/test/10-varargs.c @@ -1,5 +1,7 @@ /* EXPECT: 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 = 36 +<1.5> +1.1 + 2.1 + 3.1 + 5.1 + 1.5 + -1.5 + 1.5 + -1.5 + 1.5 + -1 = 11.9 */ @@ -18,6 +20,26 @@ int sum(int x, ...) { return x; } +double stkarg(double a, double b, double c, double d, double e, double f, double g, double h, double x) { + printf(""); + return x; +} + +double sumf(double x, ...) { + va_list ap; + va_start(ap, x); + printf("%g", x); + for (double y; (y = va_arg(ap, double));) { + printf(" + %g",y); + x += y; + } + va_end(ap); + return x; +} + + int main() { printf(" = %d\n", sum(1,2,3,4,5,6,7,8,0,0)); + printf("<%g>\n", stkarg(0,0,0,0,0,0,0,0,1.5)); + printf(" = %g\n", sumf(1.1, 2.1, 3.1, 5.1, 1.5, -1.5, 1.5, -1.5, 1.5, -1.0, 0.0)); } -- cgit v1.2.3