Что-то не понимаю в чем проблема.
В циклах заполняю один и тот же массив разными значениями. Один цикл компилится с предупреждением, что индекс выходит за пределы массива.
Первый случай:
Код
for (int n=ADC_FIRST;n<ADC_SECOND;n++)
{
здесь делаю всякие вещи, последним действием кидаю значения в массив
dac1_array[n-ADC_FIRST]=adc_array[n-FILTER_COUNT];
}
"-ADC_FIRST" - убираю смещение, которое необходимо для массива adc_array.
Второй случай:
Код
for (int n=ADC_SECOND;n<ADC_LAST;n++)
{
здесь делаю тоже всякие вещи и также последним действием кидаю значения в тот же массив.
dac1_array[n-ADC_SECOND]=adc_array[n-FILTER_COUNT];
}
"-ADC_SECOND" - убираю смещение, которое необходимо для массива adc_array.
Т.е. как я понимаю относительно массива dac_array действия одинаковы - заполняю массив от 0 и выше.
Но во втором случае компилятор ругается - interrupt_dma2_ch4_5.c:172:21: warning: array subscript is above array bounds [-Warray-bounds]
Если переписываю последнюю строчку - dac1_array[n-(ADC_SECOND-1)] компилятор проглатывает, хотя по сути я должен вылезти за верхнюю границу.
Ругается точно на переполнение индекса dac1_array. так как adc_array[] я менял на 0.
Ой, забыл написать просьбу - "Братцы, помогите разобраться".
хех... немного локализовал проблему. Поленился убрать скобки, когда убирал "-1" и компилятор проглотил вот такую строку - "dac1_array[n-(ADC_SECOND)]=adc_array[n-FILTER_COUNT];"
Макросы, которые вычисляются необходимо закрывать в скобки, что ли?
Да. Конечно. Сам дурак. Забыл, что макрос это просто подставление текста. Вот блин

Было задано так - #define ADC_SECOND ADC_FIRST+(ADC_COUNT/2)
Сделал так и покатило - #define ADC_SECOND (ADC_FIRST+(ADC_COUNT/2))
Славно, что на таком легком месте споткнулся.
Спасибо за внимание.