簡體   English   中英

如何在Rust中訪問C常量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM