2014-03-04 24 views
0

我試圖在同一個hdf5數據庫中輸入一個double值。它包括(現在)在輸入新值之前擴展的一個數據集。那是因爲我正在模擬一個模型並希望記錄> 100000個條目。這很好,擴展部分,但我不明白寫作的一部分。我寫一個條目代碼:直接在HDF5中填充值

double pizza[1] = {7.0}; 
status = H5Dwrite (dataset, H5T_NATIVE_DOUBLE, memspace, filespace,H5P_DEFAULT, pizza); 

隨着數據集,memspace,併爲相應的參數(從here拍攝)文件空間正確的變量。但爲什麼最後一個參數應該是預定義的列表?當我試圖進入7.0直接

status = H5Dwrite (dataset, H5T_NATIVE_DOUBLE, memspace, filespace,H5P_DEFAULT, {7.0}); 

這樣或這樣的:

status = H5Dwrite (dataset, H5T_NATIVE_DOUBLE, memspace, filespace,H5P_DEFAULT, 7.0); 

它給出了一個錯誤:

error: cannot convert ‘double’ to ‘const void*’ for argument ‘’ to ‘herr_t H5Dwrite(hid_t, hid_t, hid_t, hid_t, hid_t, const void*)’ = H5Dwrite (dataset, H5T_NATIVE_DOUBLE, memspace, filespace,H5P_DEFAULT, 7.0); 

而在第二種情況:

error: cannot convert ‘<brace-enclosed initializer list>’ to ‘const void*’ for argument ‘6’ to ‘herr_t H5Dwrite(hid_t, hid_t, hid_t, hid_t, hid_t, const void*)’H5Dwrite (dataset, H5T_NATIVE_DOUBLE, memspace, filespace,H5P_DEFAULT, {7.0}); 

爲什麼列表不同,然後單個VA即使被括號包圍了嗎?

回答

1

編譯器取值7.0,默認情況下它的編譯器將其轉換爲double的本質。因此它向你顯示這個錯誤。

如果你需要使它工作,使用的pizza基地址,並輸入其轉換爲(const void *)

可能是未來的大括號內的初始化列表,因爲編譯器認爲它是一個可變的參數列表。