#![crate_type = "cdylib"] | |
extern "C" { | |
fn observe(ptr: *const u8, len: usize); | |
} | |
macro_rules! s { | |
( $( $f:ident -> $t:ty );* $(;)* ) => { | |
$( | |
extern "C" { | |
fn $f() -> $t; | |
} | |
let s = $f().to_string(); | |
observe(s.as_ptr(), s.len()); | |
)* | |
}; | |
} | |
#[no_mangle] | |
pub unsafe extern "C" fn foo() { | |
s! { | |
get_u8 -> u8; | |
get_i8 -> i8; | |
get_u16 -> u16; | |
get_i16 -> i16; | |
get_u32 -> u32; | |
get_i32 -> i32; | |
get_u64 -> u64; | |
get_i64 -> i64; | |
get_usize -> usize; | |
get_isize -> isize; | |
} | |
} |