1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
//! C 平台特定类型的兼容性模块。请改用 [`core::ffi`]。

#![stable(feature = "raw_os", since = "1.1.0")]

#[cfg(test)]
mod tests;

macro_rules! alias_core_ffi {
    ($($t:ident)*) => {$(
        #[stable(feature = "raw_os", since = "1.1.0")]
        #[doc = include_str!(concat!("../../../../core/src/ffi/", stringify!($t), ".md"))]
        // 使此类型别名显示为依赖于 cfg,以便 Clippy 不建议将 `0 as c_char` 之类的表达式替换为 `0_i8`/`0_u8`。
        // 这个 #[cfg(all())] 可以是
        // removed after the false positive in https://github.com/rust-lang/rust-clippy/issues/8093
        // 是固定的。
        #[cfg(all())]
        #[doc(cfg(all()))]
        pub type $t = core::ffi::$t;
    )*}
}

alias_core_ffi! {
    c_char c_schar c_uchar
    c_short c_ushort
    c_int c_uint
    c_long c_ulong
    c_longlong c_ulonglong
    c_float
    c_double
    c_void
}