Seite 1 von 1

Funktion wrapen

Verfasst: Di Nov 27, 2012 6:45 pm
von naums
Ahoi,

Ich hab zwei Funktionen, eine für Windows (printf) und eine für Linux/Mac (printw). Ich will die beiden nun verwenden, also unter Windows soll printf ausgeführt werden, unter Linux printw - und ich will nur print schreiben.

Folgende "lösung":

Code: Alles auswählen

#ifdef WINDOWS
#define print() printf()
#else
#define print() printw()
#endif
Klappt nur leider net ganz, Kompilierung bricht mit folgender Fehlermeldung ab:
io.cpp:15:22: Fehler: dem Makro »print« wurden 1 Argumente übergeben, aber es nimmt nur 0
Bitte um Hilfe.

MfG

Re: Funktion wrapen

Verfasst: Di Nov 27, 2012 6:53 pm
von cloidnerux
Wie wäre es mit:

Code: Alles auswählen

#define print(a) printf(a)
Du musst ja iwie angeben, was du an Parametern hast.

Re: Funktion wrapen

Verfasst: Di Nov 27, 2012 8:11 pm
von Xin
Lass das mit den Macros:

Code: Alles auswählen

#ifdef WINDOWS
#define print printf
#else
#define print printw
#endif

Re: Funktion wrapen

Verfasst: Di Nov 27, 2012 8:17 pm
von naums
Erklär bitte, wo ist da der Unterschied? Was bringt mir das? Warum keine Makros?

Re: Funktion wrapen

Verfasst: Di Nov 27, 2012 8:44 pm
von Xin
naums hat geschrieben:Erklär bitte, wo ist da der Unterschied? Was bringt mir das? Warum keine Makros?
Keine Klammer, keine Argumente, keine Macros.... Hmm... Apples Autokorrektur steht auf Machos, sieh an...

Du machst hier einfach nur eine Wortersetzung. Dass das jetzt eine glasklare Definition wäre, würde ich nicht sagen, bei mir läuft die Wortersetzung mehr unter "ein Define" und etwas mit Parametern unter "ein Makro".