回答
PyUnicodeObject
是PyObject
一個子集所以不應該有它傳遞任何問題。
你可以只使用一個投在C代碼用於此目的:
PyUnicodeObject *p = ...whatever...;
callsomefun((PyObject*)p);
所有的各種具體,具體類型PyWhateverObject
可以被看作是的PyObject「源自」。現在C確實有繼承的概念,所以它沒有「派生」的概念,但是Python虛擬機非常簡單地合成它,通過確保每個這樣的對象的內存佈局「開始於」一個頭,這個頭與一個PyObject
結構是完全對應的有一個宏)。這保證了指針的正常C轉換(雖然技術上「風險」,因爲編譯器無法檢查正確性 - 如果你投錯了東西,你只會在運行時崩潰;-)在指向PyObject的指針以及指向具體的具體Python類型結構的指針。
聯繫我電話 PyUnicodeObject類型 - > PyBytesObject類型 PyUnicodeObject * p = ... whatever ...; callafun((PyByteObject *)p); 出現總線錯誤。 – dizgam 2010-05-15 14:21:05
@kamol,'PyUnicodeObject'和'PyBytesObject'中的每一個都是'PyObject'的_separate_「概念子類」,所以演員陣容不會在那裏工作(而且這不是**你在Q中提出的問題,所以我建議你編輯它以涵蓋你的**真實**問題)。有關您當前非常具體且完全不同的問題,請參閱http://docs.python.org/py3k/c-api/unicode.html#PyUnicode_Encode(並確保爲您創建的字節對象使用本地變量在調用完成之後,必須將其遞減,除非你所調用的函數是一個很少見的函數,它可以引用_steals_)。 – 2010-05-15 14:41:15
- 1. 若要將PyBytesObject類型轉換爲python3中的PyUnicodeObject類型
- 2. 有沒有簡單的方法將C#類轉換爲PHP?
- 3. 無法將類型變量(Null)轉換爲類型(OleStr)
- 4. TensorFlow:有沒有辦法將無類型的列表轉換爲張量?
- 5. 有沒有辦法將列表變量轉換爲非列表變量?
- 6. 轉換爲變量類型
- 7. 如何將PyObject轉換爲java布爾類型
- 8. 沒有額外的方法轉換爲可空類型
- 9. 將變量值轉換爲新方法
- 10. 有沒有一種有效的方法將Bundle轉換爲ContentValues?
- 11. SAS變量沒有類型
- 12. 有沒有辦法爲extern類型定義變量
- 13. 將具有2個變量的方法轉換爲一個變量
- 14. 將所有POST變量轉換爲htmlspecialchars
- 15. 有沒有辦法將變量類型綁定到列數據類型?
- 16. 在TypeScript泛型方法中將變量轉換爲T?
- 17. Java:有沒有辦法將文本轉換爲類?
- 18. 有沒有辦法將函數變量轉換爲D中的字符串?
- 19. 有沒有辦法將多個變量聲明轉換爲每行一個?
- 20. 有沒有簡單的方法將值轉換爲字符串?
- 21. 有沒有簡單的方法將標準轉換爲HQL?
- 22. 有沒有一種方法可以將網頁轉換爲pdf?
- 23. 有沒有將Collection轉換爲F#序列的安全方法?
- 24. scala中有沒有將任何Map轉換爲java.util.Map的方法?
- 25. 有沒有「正確的」方法將django.db.models.query.ValuesListQuerySet轉換爲純List?
- 26. 將PHP變量轉換爲Javascript變量具有轉義字符
- 27. 方法''沒有支持轉換爲SQL
- 28. 有沒有辦法將SearchQuerySet轉換爲object.filter返回的類型? -Django
- 29. 有沒有辦法將這個枚舉轉換爲正確的類型
- 30. 有沒有辦法將模板類型轉換爲shared_ptr <T>?
...除了當然C編譯器不可能知道(沒有子集,子類,繼承等的概念),所以你需要一個強制轉換(指向指針強制轉換的指針),正如我在我的答案中解釋的那樣。 – 2010-05-15 14:19:17