Hallo Zu Testzwecken compiliere ich meinen Code für den V850 auf dem PC unter GCC. Da ich auf dem PC mittels printf() schön in die Konsole schreiben kann, auf dem Target jedoch auf ein Terminal, dachte ich, eine Funktion zu basteln, welche, falls auf dem PC compiliert ein printf() aufruft, falls auf dem Target, die entsprechende Sequenz für das Terminal: void TraceFunkt(???) { #ifdef PC printf(Arg1, Arg2, ???); // Z1 #else sprintf(G_UartStr, Arg1, Arg2, ???); // Z2 UARTPrintF(G_UartStr); // Z3 #endif } Ich weiss aber nicht, wie ich das mit den Argumenten machen soll. Weiss jemand Rat oder eine bessere Lösung? Oder wie könnte ich die Zeile Z1 bzw. Z2/Z3 in ein Macro packen? Bin dankbar für Hinweise.
Das Stichwort im Netz lautet 'variadische Funktionen' Ich versuch mich mal daran. Nicht schlagen wenns so nicht geht :-) void TraceFunkt( const char* Fmt, ... ) { va_list ap; va_start( ap, Fmt ); #ifdef PC vprintf( Fmt, ap ); #else vsprintf( G_UartStr, Fmt, ap ); UARTPrintfF( G_UartStr ); #endif va_end( ap ); } Über die notwendigen Includes bin ich mir nicht im klaren. Ich denke aber, stdarg.h sollte ausreichen.
Pff. Glück gehabt. :-) Ich hab solche Dinger schon ewig nicht mehr benutzt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.