直接在HDF5中填充值

时间:2014-03-04 10:05:02

标签: c hdf5

我试图在同一个hdf5数据库中输入一个double值。它包含(目前)1个数据集,我在输入新值之前将其扩展。那是因为我正在模拟一个模型并想要记录> 100000个条目。这很好,延伸部分也是如此,但我不理解写作的一部分。我编写条目的代码:

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});

为什么列表与单个值不同,即使用括号括起来?

1 个答案:

答案 0 :(得分:1)

编译器取值7.0,默认情况下编译器将其转换为double的性质。因此它会向您显示此错误。

如果您需要将其设为有效,请使用pizza的基地址,并将其输入(const void *)

括号括起初始化列表可能会出现,因为编译器认为它是一个变量参数列表。