Ho una funzione che restituisce un valore intero. Ora voglio scrivere una macro che chiama questa funzione, ottiene il valore di ritorno e antepone una stringa ad esso e restituisce la stringa risultante.Macro in C per chiamare una funzione che restituisce un intero e quindi restituisce una stringa
Ho provato questo:
#define TEST(x) is_enabled(x)
io chiamo questa macro nella funzione principale:
int ret = 0;
ret = TEST(2);
printf("PORT-%d\n", ret);
Questo funziona perfettamente. Comunque voglio che la macro restituisca la stringa PORT-x, dove x è il valore di ritorno della funzione chiamata. Come posso fare questo?
EDIT:
Ho anche provato a scrivere in più righe come:
#define TEST(x)\
{\
is_enabled(x);\
}
e lo ha chiamato nella funzione principale:
printf("PORT-%d\n", TEST(2));
Ma questo dà una compilazione errore orario:
error: expected expression before â{â token
Può essere fatto scrivendo una macro che "chiama" 'sprintf', ma sarà necessario allocare un buffer e passarlo a quella macro. La domanda è: perché vuoi che inizi? Perché sembra che tu stia cercando di risolvere qualcosa nel modo sbagliato. –
Perché non puoi usare 'strcat'? Perché è necessaria una macro? – Gopi
Dovresti assolutamente scrivere una funzione per questo ... – Antzi