Ок, попробуем по подробнее.
есть вот такой код, и он падает при сборке в приведенную выше ошибку
Код: Выделить всё
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, например, приводит к нормальной компиляции..
вариант с трудностями компилятора в реализации ветвлений на относительных переходах интересный, но выглядит печально )
ПС я не шибко програмер, я таки больше по железкам.
ППС этот код студенты писали, я там мелочи всякие допиливал