The problem is that #[repr(C)] enum is not compatible with C, even with #[non_exhaustive] annotation, and will never be, because C enum can be described in Rust terms as:
#[repr(C)]
enum Foo {
A = 1,
B = 2,
C = 3,
UNKNOWN(i32),
}
which is not possible to define in current version of Rust.