C-variadic has been used on a non-foreign function.

Erroneous code example:

fn foo2(x: u8, ...) {} // error!

Only foreign functions can use C-variadic (...). It is used to give an undefined number of parameters to a given function (like printf in C). The equivalent in Rust would be to use macros directly.