2009-01-29 52 views
0

我正在使用sqlite C API。
「Everything」在主函數中運行(變量,打開,執行查詢,關閉數據庫等) 另外,我現在想創建單獨的用戶定義函數,例如,在數據庫上。Sqlite C用戶定義函數

將db對象和變量從main傳遞給這個新函數的最佳方法是什麼?將它們全部創建爲全局變量?通過參考傳遞?這是Sqlite3_create_function的用途嗎?

請讓我知道如何澄清這個問題,如果需要的話。

謝謝。

回答

1

sqlite3_create_function需要void *pApp的說法。目的是指出你的函數使用的數據。指針存儲在SQLite託管函數上下文中。您可以使用sqlite3_user_data從用戶函數中獲取該指針。既然你分配了內存,你可以在應用程序和函數之間共享它。

這個機制並沒有比使用全局變得更難,而且如果你決定稍後再做,它支持多線程應用程序。