我正在爲Rust編寫一個FFI包裝。我看到libc::c_char
和std::os::raw::c_char
的用法。我對C的知識非常少,我想知道是否有任何區別。如果我想通過cffi向Python公開一個字符串,應該使用什麼?我應該使用libc :: c_char還是std :: os :: raw :: c_char?
2
A
回答
2
我不能回答這是更地道,但我可以說,他們是在64位Linux(對大多數在線託管的文檔默認平臺)相同:
type c_char = i8;
type c_char = i8;
尋找在不同的平臺更廣泛地是有點複雜。標準庫tightly groups all the definitions for c_char
,但是libc groups them by platform。考慮到這種類型的基本原理,我希望它們在所有平臺上都是相同的。
實際上,這些定義都不可能改變,所以可能沒有任何穩定性差異。
我的意見是使用標準庫版本的版本,直到我需要使用libc
中的特定內容,在這種情況下,我可能會將所有類型切換到libc變體,以保持一致。
2
除了@ Shepmaster的回答,我想強調的事實libc
不依賴於std
。
因此,如果你不能使用std
,你將不得不使用libc
。 這種情況可以看出here。
目前默認鏈接到標準庫libc,但如果你不是喜歡一個
#![no_std]
情況或者木箱用libc中,您可以通過請求該信息:
[dependencies]
libc = { version = "0.2", default-features = false }
相關問題
- 1. 將路徑轉換爲* c_char最直接的方法是什麼?
- 2. 鑄造一個c_char_p到c_char陣列
- 3. 我應該使用std :: old_c_functions還是隻使用old_c_functions?
- 4. 我應該使用TNSNAMES.ORA還是tnsnames.ora?
- 5. 我應該使用std :: list還是有更好的方法?
- 6. 我應該發送std :: set來使用refrence還是不行?
- 7. Python ctypes - 當字符串嵌入null時設置c_char數組?
- 8. 我應該使用public $ var還是應該使用__construct()?
- 9. 我應該使用PurePDF還是AlivePdf
- 10. 我應該使用ABPersonViewController還是ABUnknownPersonViewController
- 11. 我應該使用Series.replace還是Series.str.replace?
- 12. 我應該使用requestanimationframe還是setTimeout?
- 13. 我應該使用SASS還是SCSS?
- 14. 我應該使用Boost.GIL還是死了?
- 15. 我應該使用Flash還是Java?
- 16. 我應該使用partial還是show.html.erb?
- 17. 我應該使用pygame.event.get()還是pygame.event.poll()?
- 18. 我應該使用BroadcastReceiver還是Service?
- 19. 我應該使用urandom還是openssl_random_pseudo_bytes?
- 20. 我應該使用SyncLock還是Interlocked?
- 21. 我應該使用Backbone.emulateHTTP還是php file_get_contents
- 22. 我應該使用rand()還是rand_s()?
- 23. 我應該使用XMLHttpRequest/JSON還是iFrame?
- 24. 我應該使用NSOperation還是NSRunLoop?
- 25. 我應該使用UUID還是其他?
- 26. 我應該使用UIImageview還是其他?
- 27. 我應該使用TempData還是RedirectToAction?
- 28. 我應該使用SPContext還是ClientContext?
- 29. 我應該使用Timer,Handler還是ASyncTask?
- 30. 我應該使用SQL還是JSON
「我的C知識是非常小的,我想知道是否有任何區別。「,爲什麼C應該關心這一點?這是關於生鏽的。這顯然是描述相同的事情。 C中的一個char – Stargateur