1 External C functions are allowed to be variadic. However, a variadic function
2 takes a minimum number of arguments. For example, consider C's variadic `printf`
6 use std::os::raw::{c_char, c_int};
9 fn printf(_: *const c_char, ...) -> c_int;
13 Using this declaration, it must be called with at least one argument, so
14 simply calling `printf()` is invalid. But the following uses are allowed:
17 # #![feature(static_nobundle)]
18 # use std::os::raw::{c_char, c_int};
19 # #[cfg_attr(all(windows, target_env = "msvc"),
20 # link(name = "legacy_stdio_definitions", kind = "static-nobundle"))]
21 # extern "C" { fn printf(_: *const c_char, ...) -> c_int; }
24 use std::ffi::CString;
26 let fmt = CString::new("test\n").unwrap();
29 let fmt = CString::new("number = %d\n").unwrap();
30 printf(fmt.as_ptr(), 3);
32 let fmt = CString::new("%d, %d\n").unwrap();
33 printf(fmt.as_ptr(), 10, 5);