相关疑难解决方法(0)

如何在Rust的FFI中使用C预处理器宏?

我正在编写一些代码来连接用C编写的现有库.在我的Rust代码中,我希望能够使用来自CPP宏的值.如果我有一个C include.h,它看起来像这样:

#define INIT_FLAG 0x00000001
Run Code Online (Sandbox Code Playgroud)

我希望能够像Rust一样在Rust中使用它:

#[link(name="mylib")]
extern {
    pub static init_flag: c_int = INIT_FLAG;
}
Run Code Online (Sandbox Code Playgroud)

我查看了其他FFI代码,我看到很多人在Rust中复制这些值而不是从FFI中获取它们.这似乎有点脆弱,我也希望能够处理通过CPP宏定义的更复杂的事情.运行cpp我的Rust文件只有在我确定我的CPP宏仅用于简单的事情时才有效.

macros ffi rust c-preprocessor

12
推荐指数
2
解决办法
2080
查看次数

标签 统计

c-preprocessor ×1

ffi ×1

macros ×1

rust ×1