Ок, попробуем по подробнее.
есть вот такой код, и он падает при сборке в приведенную выше ошибку
Код: Выделить всё
void HD44780::SendNumber(int8_t x ) //вывод в 10-ной системе
{
uint8_t X;
if(x<0)
{
Send_Data(0b00101101);// отправляем "-"
X=-x; //делаем число положительным
}
else
{
X=x;
}
uint8_t Ts,T=0,N;
for(N=3;N>0;N--) //N=3 т.к.
{
Ts=X/pow(10,N-1)-T;
T=(Ts+T)*10;
if (Ts)
Send_Data(Ts+0x30);
else
if (_leadingZeroes)
Send_Data(' ');
}
}
Код: Выделить всё
void HD44780::SendNumber(int8_t x ) //вывод в 10-ной системе
{
uint8_t X;
if(x<0)
{
Send_Data(0b00101101);// отправляем "-"
X=-x; //делаем число положительным
}
else
{
X=x;
}
uint8_t Ts,T=0,N;
for(N=3;N>0;N--) //N=3 т.к.
{
Ts=X/pow(10,N-1)-T;
T=(Ts+T)*10;
if (Ts)
Send_Data(Ts+0x30);
else
if (_leadingZeroes)
Send_Data(' ');
else
Send_Data(Ts+0x30);
}
}
самое интересное, что замена переменной _leadingZeroes на некоторую локальную производную от Ts, например, приводит к нормальной компиляции..
вариант с трудностями компилятора в реализации ветвлений на относительных переходах интересный, но выглядит печально )
ПС я не шибко програмер, я таки больше по железкам.
ППС этот код студенты писали, я там мелочи всякие допиливал так что за качество и стиль - не пинать