mirror of
https://github.com/ziglang/zig.git
synced 2024-11-30 09:02:32 +00:00
32 lines
925 B
Zig
32 lines
925 B
Zig
const std = @import("std");
|
|
const testing = std.testing;
|
|
const builtin = @import("builtin");
|
|
|
|
fn add(count: c_int, ...) callconv(.C) c_int {
|
|
var ap = @cVaStart();
|
|
defer @cVaEnd(&ap);
|
|
var i: usize = 0;
|
|
var sum: c_int = 0;
|
|
while (i < count) : (i += 1) {
|
|
sum += @cVaArg(&ap, c_int);
|
|
}
|
|
return sum;
|
|
}
|
|
|
|
test "defining a variadic function" {
|
|
if (builtin.cpu.arch == .aarch64 and builtin.os.tag != .macos) {
|
|
// https://github.com/ziglang/zig/issues/14096
|
|
return error.SkipZigTest;
|
|
}
|
|
if (builtin.cpu.arch == .x86_64 and builtin.os.tag == .windows) {
|
|
// https://github.com/ziglang/zig/issues/16961
|
|
return error.SkipZigTest;
|
|
}
|
|
|
|
try std.testing.expectEqual(@as(c_int, 0), add(0));
|
|
try std.testing.expectEqual(@as(c_int, 1), add(1, @as(c_int, 1)));
|
|
try std.testing.expectEqual(@as(c_int, 3), add(2, @as(c_int, 1), @as(c_int, 2)));
|
|
}
|
|
|
|
// test
|