[英]How do I access a C constant in Rust?
我試圖在Rust中使用C常量。 這是C代碼的一部分:
#define INT_CANCEL 2
在Go中,我可以執行以下操作:
return C.INT_CANCEL
我將如何在Rust中做類似的事情?
我嘗試過類似的東西
#[link(name = "name_of_lib")]
extern {
int INT_CANCEL
}
但這不能編譯。
我不是戈弗, 只好不理解ç #define
小號兩種。 相反, cgo會這樣做 (至少是其中的一些子集 )。
最好和最簡單的選擇是將值復制到程序中。 請注意,您必須定義一個大小 :
const INT_CANCEL: u8 = 2;
如果確實需要能夠在運行時確定類型,則也可以創建一個宏,但這並不常見。
您還可以創建一個 編譯 腳本 ,該腳本 編譯一些包含標頭的C代碼並打印出適當的Rust代碼:
#include <stdio.h>
#include "myheader.h"
int main(int argc, char *argv[]) {
printf("const INT_CANCEL: u8 = %d;\n", INT_CANCEL);
return 0;
}
然后可以將該Rust代碼包含回您的項目中。
您還可以嘗試修改rust-bindgen ,使其與cgo相似,並嘗試自動創建這些常量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.