Разбираю код, написанный давным-давно не мной и скомпилированный древним RVDS 2.2. Программа работает, но возник вопрос.
Есть некая структура:
Код
typedef struct
{
UINT64 Power[5];
UINT64 IncThreshold[5];
REAL32 NoisePower[5];
}Data;
Затем в программе объявляется указатель на Power:
Код
UINT64 *pPower = &ChData.Power[0];
А потом по этому же указателю происходит обращение к элементам массива IncThreshold. Например,
Код
pPower[5];
И так далее.
Насколько это безопасно? В данном случае массивы Power и IncThreshold расположены последовательно. Ошибки нет.
Вдруг другой компилятор расположит элементы структуры по-другому? Не говоря уже о том, что можно забыть и самому добавить новые элементы в структуру между данными массивами.
На мой взгляд, доволно странный код.
Сообщение отредактировал Grizzzly - Mar 11 2014, 16:32