Я вот никак не пойму, баг это компилятора или нет.
Вот такой код не хочет работать:
Код
/* main.c */
#include <stdint.h>
/* масив для сортировки */
char buff[] = "jsgewkjhcn";
/* сортировка массива методом вставки */
void sort_insert(uint8_t *items, uint8_t size)
{
uint8_t i,j,temp;
for( i=1; i < size; i++ )
{
temp = items[i];
for( j=i-1; (j < size) && (items[j] > temp); j-- )
items[j+1] = items[j];
items[j+1] = temp; // этот оператор не хочет работать
//items[++j] = temp; // а вот этот отлично работает
}
}
/* точка входа в программу */
int main(void)
{
sort_insert(buff,sizeof(buff));
return 0;
}
Проблема с индексацией массива. Может кто встречался с подобной проблеммой.
Хотя, я уже начинаю сомниваться, не в моей ли голове эта проблема, т.к. такой глюк у меня был и в предыдущих версиях GCC. А проблема достаточно очевидна и впринципе я так думаю, что еслибы это было багом, то он бы давно был исправлен (хотя кто его знает).
P.S. Включение оптимизации на результат не влияет.
Версия GCC:
Код
Reading specs from C:/Program Files/WinAVR/lib/gcc/avr/3.4.6/specs
Configured with: ../gcc-3.4.6/configure --prefix=/c/WinAVR --target=avr --enable-languages=c,c++ --with-dwarf2 --enable-win32-registry=WinAVR --disable-nls
Thread model: single
gcc version 3.4.6