Un codice legacy su cui sto lavorando ha una macro che restituisce una lista separata da virgole che deve essere utilizzata come argomento di funzione. Questo è brutto, ma il file di configurazione contiene molti di questi e sarebbe difficile cambiare ora.Separazione degli argomenti nel preprocessore C++
#define XY1 0,0
#define XY2 1,7
...
void fun_point(x,y);
fun_point(XY1);
Questo funziona benissimo fintanto che si chiama una funzione. Tuttavia, quando si cerca di chiamare un'altra macro con i parametri, l'intera stringa viene considerato come un argomento piuttosto che di divisione in virgola in due argomenti
#define MAC_POINT(x,y) (x+y)
MAC_POINT(XY1) #not expanded by preprocessor
C'è una soluzione per questo problema senza modificare le definizioni XY?
/me scuote il primo codice legacy – icabod
Ho trovato una discussione o questo problema nel manuale GCC: http://gcc.gnu.org/onlinedocs/cpp/Argument-Prescan.html#Argument-Prescan – Quantum7