undefined reference to `asprintf'

#3357435
Lesenswert?

Hallo,

ich portiere gerade eine Routine von gcc nach avr-gcc.
Mein cu (gcc) test läuft super, bis ich das ganze dann unter avr-gcc 
übersetzen lasse.
Ich erhalte die Fehlermeldung: undefined reference to `asprintf'
Ich verwende avr-gcc (GCC) 4.6.2 und CrossPack for AVR Development 
20130212.

Gibt es kein asprintf unter avr oder habe ich nur vergessen etwas 
einzubinden?

Besten Dank,
ps
#3357591
Lesenswert?

Timmo H. schrieb:
> asprintf gibts bei avrgcc nicht. Nimm einfach sprintf

Hallo Timmo,
ja das wird dann die Lösung sein, aber so einfach geht das dann wohl 
nicht, denn asprintf reallociert ja noch Speicher. Beim String 
concatinieren eventuell nicht effizient aber im code ein wenig 
poetischer.

Ok, da ich es eh umschreiben muss, wie würdet ihr diese Funktion lösen: 
ich gebe ein leeres char* rein, innerhalb iteriert er über ein Baum und 
füllt das char *  in jeder Runde mit ein paar Werten. Nach dem aufruf 
der Funktion ist also die Übergebene Referenz mit einer Anzahl an 
Zeichen gefüllt, die ich vorher nicht kennen kann. Diese kann ich dann 
ausgeben (Display, UART, whatever).

Danke euch.
Moderator Persönliche Seite #3357596
Lesenswert?

Timmo H. schrieb:
> Nimm einfach sprintf

Bzw. snprintf().  Im Prinzip kann man mit snprintf() auch ein
asprintf() emulieren, wenn man das unbedingt will:

. einmal snprintf mit einer Länge von 0 aufrufen,

. der Rückgabewert beschreibt die notwendige Länge,

. diese Länge wird mit malloc() alloziert,

. snprintf() wird noch einmal auf den Puffer aufgerufen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren