У меня есть следующий код, чтобы иметь доступ к многочисленным полям в массиве структур (для простоты я сократил его до двух). Что такое правильное заклинание для окончательного вычисления указателя *(ptr + offset) = data;
, потому что я всегда получаю:
ошибка: несовместимые типы при назначении типу 'struct osc_in_data' из типа 'int32_t' {aka 'int'}
#define NumHarmonics 10
int32_t data1;
int32_t data2;
struct osc_in_data
{
int32_t LevelAttackRate;
int64_t LevelPeakLevel;
int32_t LevelDecayRate;
} OscControl[NumHarmonics];
void SetADSRvalues(int32_t offset, int32_t data)
{
int32_t harmonic;
struct osc_in_data *ptr;
for (harmonic = 0; harmonic < NumHarmonics; harmonic++)
{
ptr = &OscControl[harmonic];
*(ptr + offset) = data;
}
}
SetADSRvalues(offsetof(struct osc_in_data, LevelAttackRate), data1)
SetADSRvalues(offsetof(struct osc_in_data, LevelDecayRate), data2)