printf geht nicht mit Parametern?

OP (Firma: EleLa - www.elela.de) #4381457
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
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?
OP (Firma: EleLa - www.elela.de) #4381470
Ohne das Include geht ja ohnehin nichts.

in der stdio.h steht das:
1
_Check_return_opt_ _CRTIMP int __cdecl printf(_In_z_ _Printf_format_string_ const char * _Format, ...);

Die Datei wurde noch nie verändert.
Moderator Persönliche Seite #4381516
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
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

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.