0
任何想法如何追查這個錯誤,將不勝感激。鏗鏘sqlite3浮動錯誤
我有一些在兩個或多個進程中運行的c代碼。第一個進程偵聽消息隊列並將結果結構保存到數據庫中。其餘進程查詢一個或多個串行設備,並通過消息隊列將此信息傳遞給第一個進程以存儲在數據庫中。
這一切都很好,除了以下內容。我正在使用的其中一個結構包含一個浮點數。此結構通過隊列發送並正確解碼,但使用sqlite3_bind_double()綁定值時,數據庫中的結果值爲0.圍繞sqlite3_bind_double()語句放置printf()語句會導致代碼工作並放置正確的值在數據庫中。
但更有意思的是,如果我刪除printf()語句並使用gcc編譯程序,代碼工作。
任何幫助將是偉大的。提前致謝。
代碼:
int
add_inverter_stat(sqlite3 *db_conn, struct inverter_stat const *istat
,int *sqlite3_err)
{
sqlite3_stmt *stmt = NULL;
*sqlite3_err = sqlite3_prepare_v2(db_conn, SQL_INSERT_INVERTER_STAT, -1
,&stmt, NULL);
*sqlite3_err = sqlite3_bind_int(stmt, 1, istat->stat_id);
*sqlite3_err = sqlite3_bind_text(stmt, 2, istat->serial_no, -1, NULL);
*sqlite3_err = sqlite3_bind_int64(stmt, 3, istat->time_taken);
*sqlite3_err = sqlite3_bind_double(stmt, 4, (double)istat->value);
*sqlite3_err = sqlite3_step(stmt);
sqlite3_finalize(stmt);
return 1;
}
請顯示'sqlite3_bind_double'周圍的確切代碼。 –