2011-09-19 64 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