Hinzufügen von default-Argumente Variable makro
Ist es möglich, default-Argumente, bevor die variable argument in variadischen makro?
e.g ich habe die version von makro-so etwas wie
#define MACRO(arg1, ...) func(arg1, ##__VA_ARGS__)
Möchte ich hinzufügen, 2 weitere Standard-Argumente in der makro vor der variable Argumente, so dass es sollte nicht auf der vorherigen version. Wie:
#define MACRO(arg1, arg2 = "", arg3 = "", ...) func(arg1, arg2, arg3, ##__VA_ARGS__)
Jede mögliche Hilfe würde geschätzt.
- C unterstützt keine default-Argumente. Meinst du C++ ?
- Nicht sicher, Im verstehen, nicht <pre>#define MAKRO(arg1, ...) func(arg1, "", "", ##__VA_ARGS__)</pre> funktioniert ?
- Ja. Vergaß zu erwähnen. Es ist für C++. Dank
- In der Tat die Argumente arg1 und arg2 in func() wird entschieden werden, basierend auf den Werten dieser Argumente im MAKRO() in der Quelle. Es kann leer sein, um Abwärtskompatibilität zu unterstützen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie tun können:
Schlechte Sache über diese - null parameter behandelt, wie kein parameter, z.B.
BAR(0, 'c')
produzieren string10, c, default
Ich glaube nicht, dass dies möglich ist. Wie würde der compiler/Präprozessor weiß, wenn die zweiten und Dritten Argumente sind Teil der variable Argumente oder überschreiben die Standard-Werte ?
Das ist der Grund, warum die Parameter mit den default-Werten werden in der letzten position in einer Funktion.
Ich fürchte, Sie müssen auf zwei Makros oder drei, wenn Sie in der Lage sein, um anzugeben, arg2, und verwenden Sie arg3 default-Wert, aber das ist fehleranfällig.
Nicht als Antwort auf deine Frage, sondern als eine Möglichkeit, einfach Ihr problem lösen: