spritf() Problem

Gast #1118760
Lesenswert?
• ▲
▼
Hallo Leute,

ich habe ein kleines Problem mit dem sprintf(string,"esl> %1.3lf um",x) 
bzw der Variable x. Nach der atof tritt das Problem auf. Wenn ich die 
Berechnung x=offset+x*factor; auskomentiere, funktionier alles 
einwandfrei. Das komplette Programm ist im Anhang. Wenn ich die Zeile 
drin lasse bekomme ich beim kompilieren die folgende Fehlermedung.


Bitte um eure Hilfe oder oder nen Tip.

Grüße

Denis Jakel

--------------------------------------------------------------------
Programmausschnitt:


x=atof(string+3);
x=offset+x*factor;  // make problems in combination with sprintf...
//
//_delay_ms(1000);
//
sprintf(string,"esl> %1.3lf um",x);

--------------------------------------------------------------------
Fehlermedung beim kompilieren:

C:\ethernut-4.4.1\nutapp\rs232d>make install
avr-gcc -c -mmcu=atmega128 -Os -fno-delete-null-pointer-checks -Wall 
-Wstrict-pr
ototypes -Wa,-ahlms=rs232d.lst -DETHERNUT2 -D__HARVARD_ARCH__ 
-IC:/ethernut-4.4.
1/nutbld/include  -IC:/ethernut-4.4.1/nut/include  rs232d.c -o rs232d.o
avr-gcc rs232d.o -mmcu=atmega128 
-Wl,--defsym=main=0,-Map=rs232d.map,--cref -LC:
/ethernut-4.4.1/nutbld/lib -Wl,--start-group 
C:/ethernut-4.4.1/nutbld/lib/nutini
t.o -lnutpro -lnutos -lnutarch -lnutdev -lnutarch -lnutfs -lnutnet 
-lnutcrt -Wl,
--end-group -o rs232d.elf
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\lib 
c.a(log.
o): In function `log':
(.text.fplib+0x3e): relocation truncated to fit: R_AVR_13_PCREL against 
symbol `
__mulsf3' defined in .text section in 
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.
2/avr5\libgcc.a(_mul_sf.o)
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\lib 
c.a(log.
o): In function `log':
(.text.fplib+0x50): relocation truncated to fit: R_AVR_13_PCREL against 
symbol `
__addsf3' defined in .text section in 
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.
2/avr5\libgcc.a(_addsub_sf.o)
make: *** [rs232d.elf] Error 1

C:\ethernut-4.4.1\nutapp\rs232d>

--------------------------------------------------------------------
#1118808
Lesenswert?
• ▲
▼
Denis Jakel wrote:
> kann aber eigentlich nicht sein, da er mir beispiele wie


doch. Kann sein.
Schau dir den make Output an.
-lm ist nicht aufgeführt.

>
> x=2*6;
>
> berechnet.

Und?

2 ist ein Integer. 6 ist ein Integer.
Also braucht der Compiler zur Berechnung von 2*6 welche Multiplikation?
(Unn mal abgesehen davon, wird der Compiler diesen Ausdruck zur 
Compilezeit auswerten. Im Maschienencode steht dann nur noch x = 12

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.