In Windows, ho una variabile di ambiente che contiene un percorso in stile Windows. Mi piacerebbe costruire quel percorso nel mio programma e stamparlo. Quindi se il mio percorso è c: \ top, lo passo nel compilatore usando -DTOP = $ (TOP). Nota: non riesco a convertirlo in c: \\ top prima di passarlo nel compilatore.Come creare una stringa letterale da -D variabile definita dal compilatore di un percorso di Windows
In questo momento, ho l'equivalente di:
#define TOP=c:\top
voglio l'equivalente di:
char path[]="c:\\top";
Non posso usare l'operatore stringafication:
#define WRAP1(X) #X
#define WRAP(X) WRAP1(X)
char path[] = WRAP(TOP);
Questo ha come risultato solo la stringa "c: \ top" che il compilatore visualizza come una sequenza di escape (cioè \ t).
Penso che una possibile soluzione sarebbe quella di costruire una stringa letterale, ma anche altre soluzioni andranno bene. C'è un modo per utilizzare le macro per costruire una stringa letterale che sarebbe resa:.
char path[] = R"foo(c:\top)foo";
Finora, tutti i miei tentativi sono falliti per ragioni che coinvolgono le variazioni del "o() o il \
Grazie
"Nota Non riesco a convertirlo in c: \\ top prima di passarlo nel compilatore" - Perché? –
Perché non '-DTOP = R" pippo ($ (TOP)) pippo "' invece? Modifica: È possibile che le virgolette debbano essere sfuggite poiché questa è un'opzione della riga di comando, come ad esempio: '-DTOP =" R "" foo ($ (TOP)) foo "" "' – Cameron
Sono in un ambiente di compilazione personalizzato che non può alterare Non posso usare virgolette aggiuntive quando specifico il -D. L'ambiente di compilazione usa anche le virgolette per analizzare ulteriori agevolazioni al compilatore. – shol74