2009-11-15 20 views
14

Was ist der einfachste Weg, Zeichenfolgen in Makros verketten. dh Der Pseudocode für ich bin auf der Suche wäre wie:Verketten von Zeichenfolgen in Makros - 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" 

Der einzige Weg, den ich kenne, strcat im Code zu verwenden ist, oder die String-Klasse verwendet und dann die c_str Methode, aber es kann erhalten chaotisch, wenn ich viele Eingabedateien habe. Ich möchte INPUT_FILE_A usw. direkt verwenden und nicht viele lokale Variablen haben. Gibt es einen guten Weg, dies zu tun?

Danke.

Antwort

42

Der Compiler wird automatisch benachbart Strings verketten:

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

Oder mehr generic:

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

Shell wurde die Zitate "Essen". Also musste folgende Zeile verwendet werden:

-DROOT_PATH=\"some-string"\