Привожу фрагмент кода:
struct t_EEPROMOffsets
{
t_EEPROMOffsets(bool isEKM)
{
if (isEKM)
{
NumSrtucts = 9;
Size = sizeof(t_EEPROMImage);
}
else
{
NumSrtucts = 8;
Size = sizeof(t_EEPROMImage) - sizeof(t_ExtraMul1);
}
Offsets = new WORD [NumSrtucts];
Offsets[0] = offsetof(t_EEPROMImage, stHead1);
Offsets[1] = offsetof(t_EEPROMImage, stBPPS_Param1);
Offsets[2] = offsetof(t_EEPROMImage, stAdcGrad1);
Offsets[3] = offsetof(t_EEPROMImage, stTcorrCoef1);
Offsets[4] = offsetof(t_EEPROMImage, stKeyClb1);
Offsets[5] = offsetof(t_EEPROMImage, stItcUst1);
Offsets[6] = offsetof(t_EEPROMImage, stDACPar1);
Offsets[7] = offsetof(t_EEPROMImage, stDACGrad1);
if (isEKM)
Offsets[8] = offsetof(t_EEPROMImage, stExtraMul1);
}
~t_EEPROMOffsets()
{
delete[] Offsets;
}
WORD NumSrtucts;
WORD Size;
WORD* Offsets;
};
Код рабочий. Раньше я не знал, что число полей внутри структуры может быть переменным ( см. IF() ), т.е. получается, что мне не хватает знаний. Где можно почитать о таком способе объявления структур? Какие ограничения есть? Или кто может разъяснить? Интересует не общая информация, а конкретная по данному случаю.