2009-11-15 22 views
14

Qual è il modo più semplice per concatenare stringhe definite in macro. cioè la pseudo codice che sto cercando sarebbe come:Concatenazione di stringhe in macro - C++

#define ROOT_PATH "/home/david/" 
#define INPUT_FILE_A ROOT_PATH+"data/inputA.bin" 
#define INPUT_FILE_B ROOT_PATH+"data/inputB.bin" 
... 
#define INPUT_FILE_Z ROOT_PATH+"data/inputZ.bin" 

L'unico modo che conosco è quello di utilizzare strcat nel codice, oppure utilizzando la classe String e quindi il metodo c_str, ma si può ottenere disordinato quando ho un sacco di file di input. Mi piacerebbe semplicemente usare INPUT_FILE_A, ecc. Direttamente e non avere molte variabili locali. C'è un buon modo per farlo?

Grazie.

risposta

42

Il compilatore concatenerà automaticamente corde adiacenti:

#define ROOT_PATH "/home/david/" 
#define INPUT_FILE_A ROOT_PATH "data/inputA.bin" 

O più generici:

#define INPUT_FILE_DETAIL(root,x) root #x 
#define INPUT_FILE(x) INPUT_FILE_DETAIL(ROOT_PATH "data/", x) 
-3

Shell è stato "mangiare" le virgolette. Quindi, la seguente riga ha dovuto usare:

-DROOT_PATH=\"some-string"\ 
Problemi correlati