Ich habe ein Makro wie folgt aus:Vergleichen Eingabeparameter von C++ Makro
#define M(x)
ich überprüfen x wollen, wenn es um void
oder nicht gleich ist. So etwas Ähnliches:
#define M(x)
if(x == void)
do not return anything
else
print a output
Problem ist, dass x
alles sein kann. M kann mit beliebigen Parametern aufgerufen werden. M (int) M (string) M (void)
Ich möchte dieses Makro kann Eingabeparameter werden erkennen void
ist.
Update 1: besser
Diese erklären ist eine Funktion Schöpfer Makro. Wie die (einfacher Code)
#define M(ret, name) \
ret name(){ \
ret r = callOtherFunc(); \
return r; \
}
Und ich will, wenn ret Leere ist dann die Zeile 'return ...' entfernt
Update 2: Forget Vorlage
Bitte schlagen nicht mit Vorlagen. Dies ist ein Teil einer größeren Lösung. Dieser kleine Teil der Lösung kann mit Vorlagen gelöst werden, aber die größere Lösung muss mit Makros gelöst werden. Also bitte posten Sie Ihre Antworten nur im Zusammenhang mit Makro und nicht Vorlage.
können Sie nicht. Der C++ - Präprozessor ist dafür nicht ausgelegt. –
Verwenden Sie Vorlagen für diese – KIIV
"Forget-Vorlage" - Sie müssen erklären, warum Sie nicht Vorlagen * für dieses kleine * verwenden können. Es ist nichts falsch daran, Vorlagen und Makros zu mischen (das ist oft der beste Weg). –