2011-09-19 72 views
2
#define mySynthesize(op) @synthesize op = _op; 

因此,而不是打字這個宏有什麼問題?

@synthesize someVar=_someVar; 
@synthesize otherVar=_otherVar; 

我可以做

mySynthesize (someVar); 

好了,它不工作,雖然。我做錯了什麼?

+2

你不只是問這裏同樣的宏問題http://stackoverflow.com/questions/7472063/i-want-to-create-a-simple-macro? –

+0

不同的問題,我認爲。 –

回答

10

當您在op前加下劃線時,預處理器將其視爲不同的標記,因此它不會被替換。您需要使用##將下劃線連接到前面,以便首先進行替換。

#define mySynthesize(op) @synthesize op = _ ## op 
+0

掛在讓我檢查。 –

+0

http://gcc.gnu.org/onlinedocs/cpp/Stringification.html – bigkm

+1

@bigkm:字符串化是完全不同的東西。我認爲你正在尋找這個http://gcc.gnu.org/onlinedocs/cpp/Concatenation.html – Joe