Error code E0791
Static variables with the #[linkage] attribute within external blocks
must have one of the following types, which are equivalent to a nullable
pointer in C:
-
*mut Tor*const T, whereTmay be any type. -
An enumerator type with no
#[repr]attribute and with two variants, where one of the variants has no fields, and the other has a single field of one of the following non-nullable types:- Reference type
- Function pointer type
The variants can appear in either order.
For example, the following declaration is invalid:
#![allow(unused)]
#![feature(linkage)]
fn main() {
extern "C" {
#[linkage = "extern_weak"]
static foo: i8;
}
}
The following declarations are valid:
#![allow(unused)]
#![feature(linkage)]
fn main() {
extern "C" {
#[linkage = "extern_weak"]
static foo: Option<unsafe extern "C" fn()>;
#[linkage = "extern_weak"]
static bar: Option<&'static i8>;
#[linkage = "extern_weak"]
static baz: *mut i8;
}
}