1个不稳定版本
0.1.1 | 2021年9月26日 |
---|---|
0.1.0 |
|
#19 in #conditional-compilation
68 每月下载量
在 2 个crate中使用(通过gmod)
6KB
80 行
✨ fn_has_this
一个进程属性宏,为函数添加一个(this)参数。
这个宏非常适合条件编译。例如,一些编译器如果在一个非静态函数中未使用(this)参数,可能会根据调用约定将其优化掉。这个宏可以轻松地将您的Rust程序条件编译以与以这种方式编译的函数进行FFI交互。
示例
#[macro_use]
extern crate fn_has_this;
use core::ffi::c_void;
#[has_this("*mut c_void")] // Will create an argument called `this` in the function
pub unsafe extern "fastcall" fn print_pointer() {
println!("{:x?}", this);
}
#[has_this("me: *mut c_void")] // You can also specify a custom name for the `this` argument
pub unsafe extern "thiscall" fn print_pointer() {
println!("{:x?}", me);
}
#[cfg_attr(target_os = "windows", has_this("me: *mut c_void"))] // Using `cfg_attr`, you can conditionally compile this attribute macro
pub unsafe extern "thiscall" fn print_pointer() {
println!("{:x?}", me);
}
依赖项
~1.5MB
~36K SLoC