4
我明白如何用ctypes在Python中定義結構,但我似乎無法找到關於如何處理基本別名的任何文檔。例如64-bit integers in SQLite:用ctypes映射基本的typedef別名?
#ifdef SQLITE_INT64_TYPE
typedef SQLITE_INT64_TYPE sqlite_int64;
typedef unsigned SQLITE_INT64_TYPE sqlite_uint64;
#elif defined(_MSC_VER) || defined(__BORLANDC__)
typedef __int64 sqlite_int64;
typedef unsigned __int64 sqlite_uint64;
#else
typedef long long int sqlite_int64;
typedef unsigned long long int sqlite_uint64;
#endif
typedef sqlite_int64 sqlite3_int64;
typedef sqlite_uint64 sqlite3_uint64;
根據構建選項,基本類型是不同的。在這種情況下,我認爲我可以假設這種類型是c_longlong
,但這是處理這種情況的正確方法嗎?
通過「使用C API而不是ctypes」,你的意思是從其他一些通過Python C API公開函數的C代碼實際調用原始C庫? – technomalogical 2011-06-06 15:47:06
Ivc表示將代碼編寫爲Python的C擴展,假設SQLite構建在您構建C擴展的同一臺計算機上,將允許您在SQLite代碼中執行相同的預處理器條件檢查。 (http://docs.python.org/extending/index.html或http://docs.python.org/py3k/extending/index.html或其他地方,取決於你使用的是什麼版本的Python 。) – JAB 2011-06-06 15:56:04