Je souhaite créer des macros qui vont insérer un paramètre dans un appel de fonction. Par exemple, j'ai la fonction Action()
déclarée ci-dessous. L'action prend comme entrée une énumération pour le numéro d'état et une chaîne formatée avec des arguments facultatifs pour la chaîne.Comment ajouter un paramètre à un appel de fonction de chaîne formatée via une fonction #define
Je veux définir des macros afin qu'au lieu d'appeler Action(ActionState1, "someText %d", &arg)
avec ActionState1
pour le paramètre d'état, je peux simplement appeler State1("someText %d", &arg)
à la place. De cette façon la macro collerait dans le ActionState1
pour l'état param pour moi. Je pense à quelque chose comme le suivant:
#define State1(formatedString, ...) Action(ActionState1, formatedString, ...)
#define State2(formatedString, ...) Action(ActionState2, formatedString, ...)
#define State3(formatedString, ...) Action(ActionState3, formatedString, ...)
enum {
ActionState1,
ActionState2,
ActionState3
}
static void Action(State state, String formatedString, ...);
Est-ce que quelqu'un sait quel serait le bon format?
Tout simplement parce que vous * pouvez * le faire, cela ne signifie pas que vous * devriez *. Pensez à passer un 'enum' comme premier paramètre à' Action', ou factoriser 'Action' dans plusieurs fonctions. – Seth
Enum est le premier paramètre à Action, je ne l'avais pas montré dans mon exemple (je l'ai mis à jour maintenant). –