printf geht nicht mit Parametern?

OP (Firma: EleLa - www.elela.de) #4381457
Lesenswert?
• ▲
▼
Hallo,

Ich möchte in mein Projekt ein printf verwenden.

Diese Codezeile geht:
1
printf("\r\nHallo\r\n");

In der Debug Console wird das richtig ausgegeben.

Wenn ich dann diese Zeile hinzu programmiere, dann geht es nicht:
1
printf("Zahl: %i\r\n", nZahl);

Linker zeigt dann den Fehler:
undefined reference to `printf'
wohl wegen dem Parameter.

weiß jemand was da noch fehlt?

Das Projekt ist ein Bootloader für den RX63N, debugt wird mit dem HEW 
und übersetzt wird das ganze mit dem Karpit Compiler.
Der Vorgänger hat wohl einiges gekürzt damit der Bootloader nicht zu 
groß wird. Ich soll den Prot vom RX62N auf den RX63N machen und da 
wollte ich seine Arbeit in der Debug Console ausgeben damit ich 
kontrollieren kann ob der noch richtig arbeitet.
Das eigentliche Projekt ist C++ und da nutzt printf andere Routinen im 
Hintergrund. puts() habe ich daher schon hinzugefügt:
1
extern "C" int puts(char *ptr) {
2
    int len = 0;
3
    while (*ptr) {
4
        charput(*ptr++);
5
        len++;
6
    }
7
    return len;
8
}

Vielen Dank für die Hilfe.
Gast #4381459
Lesenswert?
• ▲
▼
Markus M. schrieb:
> Linker zeigt dann den Fehler:
> undefined reference to `printf'
> wohl wegen dem Parameter.

kann bei C eigentlich gar nicht sein. Die Name für das Symbol ändert 
sich nicht wenn mit oder ohne Parameter arbeitet.

Wie sieht die Signatur in der Header Datei für printf aus?
Moderator Persönliche Seite #4381516
Lesenswert?
• ▲
▼
Irgendwie passt das:

Markus M. schrieb:
> Linker zeigt dann den Fehler:
> undefined reference to `printf'
> wohl wegen dem Parameter.

mit dem:

Markus M. schrieb:
> Ich habe das hinzugefügt:
> extern "C" int sbrk(int i) { UNUSED(i); return 0; }

nicht zusammen.

Sicher, dass printf undefined war und nicht sbreak?

Ich befürchte, dass Deine Dummy-sbrk-Funktion nicht den gewünschten 
Erfolg haben wird.
Moderator Persönliche Seite #4381532
Lesenswert?
• ▲
▼
Wenn man nach "RX63N sbrk" googelt, findet man u.a. das:

  http://renesasrulz.com/renesas_forum_home/rx/f/27/t/4697.aspx

----------------------------------------------------------------------
"The simple solution is to create a new project which uses heap and copy 
sbrk.c and sbrk.h from this project to your project.

You can also find the code templates used for new projects in your HEW 
installation: \HEW\System\Pg\Renesas\RX\Rx_1_1\Generate\sbrk\"
----------------------------------------------------------------------

Ich kenne das vom STM32, wenn ich dort printf verwenden möchte, muss ich 
auch eine eigene sbrk-Funktion einbinden.

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.