Ich habe eine Funktion, die einen ganzzahligen Wert zurückgibt. Jetzt möchte ich ein Makro schreiben, das diese Funktion aufruft, den Rückgabewert erhält und ihm eine Zeichenkette voranstellt und die resultierende Zeichenkette zurückgibt.Makro in C, um eine Funktion aufzurufen, die Ganzzahl zurückgibt und dann eine Zeichenfolge zurückgibt
Ich habe dies versucht:
#define TEST(x) is_enabled(x)
Ich nenne das Makro in der Hauptfunktion als:
int ret = 0;
ret = TEST(2);
printf("PORT-%d\n", ret);
Dieses perfekt funktioniert. Ich möchte jedoch, dass das Makro die Zeichenfolge PORT-x zurückgibt, wobei x der Rückgabewert der aufgerufenen Funktion ist. Wie kann ich das machen?
EDIT:
Ich habe auch versucht, es in mehrere Zeilen zu schreiben wie:
#define TEST(x)\
{\
is_enabled(x);\
}
und nannte es in der Hauptfunktion als:
printf("PORT-%d\n", TEST(2));
Aber das gibt einen Compiler Zeitfehler:
error: expected expression before â{â token
Es kann getan werden, indem man ein Makro schreibt, das "sprintf" aufruft, aber Sie müssen einen Puffer zuweisen und es diesem Makro übergeben. Die Frage ist, warum willst du damit beginnen? Weil es sich anfühlt, als ob du etwas auf die falsche Art lösen willst. –
Warum kannst du 'strcat' nicht benutzen? Warum wird ein Makro benötigt? – Gopi
Sie sollten auf jeden Fall eine Funktion für diese schreiben ... – Antzi