Ich habe folgende paar C Präprozessormakros, die ich benutze:0s zu einer unvollständigen Makroparameterliste Anfügen
#define TAKE4(a1, a2, a3, a4, ...) a1, a2, a3, a4
#define FILL_PARAMS(...) TAKE4(__VA_ARGS__, 0, 0, 0, 0)
Wenn FILL_PARAMS
mit 1 Aufruf, 2 oder 3 Parametern, die später (nicht spezifiziert) werden wie erwartet in 0 umgewandelt, aber wenn keine Argumente angegeben werden, liegt ein Fehler vor.
Gibt es eine Möglichkeit, Unterstützung für No-Parameter hinzuzufügen?
Klarstellung:
Derzeit werden folgende Anwendungen unterstützt:
FILL_PARAMS(1) // => 1, 0, 0, 0
FILL_PARAMS(1, 2) // => 1, 2, 0, 0
FILL_PARAMS(1, 2, 3) // => 1, 2, 3, 0
Und ich will Unterstützung für die folgenden Rand Fall hinzuzufügen:
FILL_PARAMS() // => 0, 0, 0, 0
Hilfe willkommen sein wird.
Es kann mit etwas Anstrengung getan werden. Werfen Sie einen Blick auf [wie es hier gemacht wurde] (http://stackoverflow.com/questions/34713046/what-is-the-meaning-of-this-c-macro/34713272) –
Was ist los mit 'FILL_PARAMS (0) 'für den leeren Fall? – Leandros
@Leandros. Aber das kann auch eine Einschränkung sein. – sjsam