c - 直接在 HDF5 中填充值

标签 c hdf5

我正在尝试在同一个 hdf5 数据库中输入 double 值。它(目前)由 1 个数据集组成,我在输入新值之前对其进行了扩展。那是因为我正在模拟模型并想要记录 > 100000 个条目。效果很好,扩展部分也很好,但我不明白其中的一部分。我编写条目的代码:

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

使用数据集、内存空间和文件空间正确对应参数的变量(取自 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});

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

最佳答案

编译器采用值7.0,默认情况下,编译器将其转换为 double 值。因此它向您显示此错误。

如果您需要使其工作,请使用 pizza 的基地址,并将其类型转换为 (const void *)

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

关于c - 直接在 HDF5 中填充值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22168717/

相关文章:

c - 当以任意顺序给出三个音符时如何解析和弦。数学

c - 如何使用 optparse-c 调用帮助功能

c - C free() 是如何工作的?

hdf5 - ILNumerics 使用什么版本的 Hdf5?

python - hdf5/h5py ImportError : libhdf5. so.7

c - 什么更有效率 : reading from a file or allocating memory

c - 在结构 C 中使用静态数组时出错

python - 在 h5py 中压缩文件更大

python - 使用 H5Py 在 HDF5 中存储日期时间

machine-learning - caffe hdf5 H5LTfind_dataset(file_id, dataset_name_) 找不到HDF5数据集