Error code E0060
External C functions are allowed to be variadic. However, a variadic function
takes a minimum number of arguments. For example, consider Cās variadic printf
function:
#![allow(unused)]
fn main() {
use std::os::raw::{c_char, c_int};
extern "C" {
fn printf(_: *const c_char, ...) -> c_int;
}
unsafe { printf(); } // error!
}
Using this declaration, it must be called with at least one argument, so
simply calling printf() is invalid. But the following uses are allowed:
use std::os::raw::{c_char, c_int};
#[cfg_attr(all(windows, target_env = "msvc"),
link(name = "legacy_stdio_definitions",
kind = "static", modifiers = "-bundle"))]
extern "C" { fn printf(_: *const c_char, ...) -> c_int; }
fn main() {
unsafe {
printf(c"test\n".as_ptr());
printf(c"number = %d\n".as_ptr(), 3);
printf(c"%d, %d\n".as_ptr(), 10, 5);
}
}