воть :
static double aa,bb,cc,dd,ff; static char stroka[10]="12.6L",*ended; static char sout1[5]; static int jj; const double e2 = 0.006739496742337; static double gg;
void progra(void) { //gg = strtod(stroka,&ended); // ругаетсо jj = round(ff); // работает jj = lrint(ff); // работает bb = 1-e2*(pow(sin(aa),2)); //работает }
int main(void) { progra(); snprintf(sout1,4,"%f",gg); sprintf(sout1,"%f",gg); }
участники праздника stdio.h math.h в Makefile указаны ключи -lc (-lm не работают математические функции) при раскоментарии strtod при компиляции выкидывает следующее...
/usr/local/atmel/bin/avr-gcc -g -Wall -Os -mmcu=atmega128 -c -o probe.o probe.c /usr/local/atmel/bin/avr-gcc -g -Wall -Os -mmcu=atmega128 -Wl,-u,vfprintf -lprintf_flt -lgcc -lc -o probe.elf probe.o /usr/local/atmel/lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/libc.a(fp_powsodd.o):../../../libm/fplib/fp_powsodd.S:59: relocation truncated to fit: R_AVR_13_PCREL against symbol `__mulsf3' defined in .text section in /usr/local/atmel/lib/gcc/avr/3.4.6/avr5/libgcc.a(_mul_sf.o) /usr/local/atmel/lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/libc.a(fp_powsodd.o):../../../libm/fplib/fp_powsodd.S:69: relocation truncated to fit: R_AVR_13_PCREL against symbol `__mulsf3' defined in .text section in /usr/local/atmel/lib/gcc/avr/3.4.6/avr5/libgcc.a(_mul_sf.o) make: *** [probe.elf] Error 1
да и вообще очень непонятно бывают себя ведут фунции sprintf .... кучу всего прошерстил ....основная мысль крутится возле теории неправильности указания порядка подключения либ... устал короче. собираю под линупсом ...gcc 3.4.6.... пробовал и под WinRarом ....та же песня ((( хотел попробовать под CodeVision ... но там упс .. нету кучи функций как то нормального округления,работы со строками ((( вспоможите люди добжие ))
|