我想用C常数来表示锈。下面是C代码的一部分:
#define INT_CANCEL 2
在围棋中,我可以这样做:
return C.INT_CANCEL
我该怎么做类似的生锈的事呢?
我试过类似的方法
#[link(name = "name_of_lib")]
extern {
int INT_CANCEL
}
但那不是编译。
最佳答案
我不是地鼠,但Go也不懂C#define
s。相反,cgo does(至少some subsets of them)。
最好也是最简单的选择是将值复制到程序中。请注意,必须定义大小:
const INT_CANCEL: u8 = 2;
如果确实需要等待运行时确定类型,也可以创建宏,但这并不常见。
您还可以创建包含标题的a build script并打印出相应的生锈代码:
#include <stdio.h>
#include "myheader.h"
int main(int argc, char *argv[]) {
printf("const INT_CANCEL: u8 = %d;\n", INT_CANCEL);
return 0;
}
然后可以将该Rust代码包含回您的项目中。
您也可以尝试修改compiles some C code以便执行类似于cgo的操作,并尝试自动创建这些常量。
关于c - 如何在Rust中访问C常量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40771335/