Funktion wrapen

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Funktion wrapen

Beitrag von naums » Di Nov 27, 2012 6:45 pm

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
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Funktion wrapen

Beitrag von cloidnerux » Di Nov 27, 2012 6:53 pm

Wie wäre es mit:

Code: Alles auswählen

#define print(a) printf(a)
Du musst ja iwie angeben, was du an Parametern hast.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Funktion wrapen

Beitrag von Xin » Di Nov 27, 2012 8:11 pm

Lass das mit den Macros:

Code: Alles auswählen

#ifdef WINDOWS
#define print printf
#else
#define print printw
#endif
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Re: Funktion wrapen

Beitrag von naums » Di Nov 27, 2012 8:17 pm

Erklär bitte, wo ist da der Unterschied? Was bringt mir das? Warum keine Makros?
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Funktion wrapen

Beitrag von Xin » Di Nov 27, 2012 8:44 pm

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".
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten