Macros, die ein Abschnitt der Kode im String umwaldeln um zu printen
-
Mehrere Funktionen haben eine Rückgabewert abhängig davon, was für eine Fehler passierte, in meisten Fällen 0 = kein Fehler, -1 Unbekannte Fehler etc.
Normalerweise nach aufruf dieser Funktion macht man so ein Check :
errno = funk1(blablabla...); if (errno == -1){ printf ("funk1(blablabla...) Unbekannte Fehler"); exit errno;}Ich will es aber nicht immer die Klammer schreiben sondern diese mit Hilfe eines Macros zu realisieren:
#define SAFE_CALL(funk) \ {errno = funk; \ printf("funk" + "Unbekannte Fehler"); \ exit errno;};}\Man kan mehr informative Ausgaben machen. z.B. mit __LINE__ und __FILE__ .
Die Frage ist , wie soll mandie Funktionname und/oder deren
Parameter in printf() als Strings nützen, da o,G Kode printet "funk" aus
aus und nicht das Wert in dem Macro.
Ein Anderer Versuch#define ___Quote " .... printf(Quote funk Quote); \ ...erzeugt ein Fehler. Ist es also möglich so zu Strings konvertieren und vielleicht hat jemand andere Vorschläge es zu realisieren?
MFG.
-
Das ist kein C++.
-
#define print(x) printf(#x) int main() { print(HalloWelt); }Aber ist das überhaupt C++ was du da veranstalltest? exit errno sollte nicht mal kompilieren. Zudem solltest du dir dringend mal Exceptions ansehen.
-
Falsches_Forum schrieb:
Das ist kein C++.
Forum verwächselt, sorry.
Gibt es vielleicht C++ Features dafür?
oder einfach dann
cout << #HalloWelt;soll doch auch funktionieren?
-
cooky451 schrieb:
#define print(x) printf(#x) int main() { print(HalloWelt); }Und wenn man es immer mit zwei Klammerpaaren schreibt, dann kann man auch mal ein Komma im "Code" haben
#define print(x) printf(#x) int main() { print(( Hallo(1, 2) + Welt() )); }