Size: a a a

IT KPI C/C++ ХВ (не UB)

2021 February 17

АХ

Анна Хашпер... in IT KPI C/C++ ХВ (не UB)
Да черед VS
источник

АХ

Анна Хашпер... in IT KPI C/C++ ХВ (не UB)
// Вот этот тип пишется в h5
// В windows там окажется 32-bit integer,
// а в linux - 64-bit integer

hid_t h5_type = get_hdf5_type<T> ();


// Читаем полученный h5

hid_t group = h5_group_open (file, path.c_str());

hid_t dataset = h5_dataset_open(group, "values");
hid_t datatype = H5Dget_type (dataset);
H5Tclose (datatype);


// В windows sizeof (T) = 32
// и data_type_size = 32.
// В linux sizeof (T) = 32,
// а data_type_size = 64

if (sizeof (T) != data_type_size)
 return -1;
источник

АХ

Анна Хашпер... in IT KPI C/C++ ХВ (не UB)
Потом читаю этот h5 файл, и в линуксе не проходит проверку
источник

RN

Ruslan Neshta in IT KPI C/C++ ХВ (не UB)
а какая конфигурация стоит в студии?
источник

RN

Ruslan Neshta in IT KPI C/C++ ХВ (не UB)
студия 19?
источник

АХ

Анна Хашпер... in IT KPI C/C++ ХВ (не UB)
17
источник

АХ

Анна Хашпер... in IT KPI C/C++ ХВ (не UB)
Конфигурация Release
источник

k

kvark in IT KPI C/C++ ХВ (не UB)
а сам Т как определяется?
источник

RN

Ruslan Neshta in IT KPI C/C++ ХВ (не UB)
сори, платформа а не конфигурация
источник

k

kvark in IT KPI C/C++ ХВ (не UB)
это класс или функция?
источник

АХ

Анна Хашпер... in IT KPI C/C++ ХВ (не UB)
T всегда int
источник

RN

Ruslan Neshta in IT KPI C/C++ ХВ (не UB)
вот тут что?
источник

АХ

Анна Хашпер... in IT KPI C/C++ ХВ (не UB)
В студии точно 64
источник

k

kvark in IT KPI C/C++ ХВ (не UB)
если нужно абсолютно точно на всех платформах одинаковый размер, мож заюзать это
https://en.cppreference.com/w/cpp/types/integer
источник

k

kvark in IT KPI C/C++ ХВ (не UB)
вместо инта
источник

k

kvark in IT KPI C/C++ ХВ (не UB)
како-йто int32_t например
источник

RN

Ruslan Neshta in IT KPI C/C++ ХВ (не UB)
Анна Хашпер
В студии точно 64
да, студия просто ставит такой размер для инта под х64
источник

RN

Ruslan Neshta in IT KPI C/C++ ХВ (не UB)
проверил у себя
источник

АХ

Анна Хашпер... in IT KPI C/C++ ХВ (не UB)
Пусть бы даже в винде 32 был int, а в линукс 64. Но тут линукс как бы сам себе противоречит. Sizeof (int) у него 32, а get_hdf5_type 64 возвращает
источник

RN

Ruslan Neshta in IT KPI C/C++ ХВ (не UB)
Анна Хашпер
// Вот этот тип пишется в h5
// В windows там окажется 32-bit integer,
// а в linux - 64-bit integer

hid_t h5_type = get_hdf5_type<T> ();


// Читаем полученный h5

hid_t group = h5_group_open (file, path.c_str());

hid_t dataset = h5_dataset_open(group, "values");
hid_t datatype = H5Dget_type (dataset);
H5Tclose (datatype);


// В windows sizeof (T) = 32
// и data_type_size = 32.
// В linux sizeof (T) = 32,
// а data_type_size = 64

if (sizeof (T) != data_type_size)
 return -1;
так тут в битах или байтах последний комментарий?
источник