这个宏有什么问题?

use*_*951 2 macros xcode objective-c

#define mySynthesize(op) @synthesize op = _op;
Run Code Online (Sandbox Code Playgroud)

所以而不是打字

@synthesize someVar=_someVar;
@synthesize otherVar=_otherVar;
Run Code Online (Sandbox Code Playgroud)

我可以做

mySynthesize (someVar);
Run Code Online (Sandbox Code Playgroud)

嗯,它不起作用.我做错了什么?

ugh*_*fhw 10

当您op使用下划线作为前缀时,预处理器会将其视为不同的标记,因此不会替换它.您需要使用##将下划线连接到前面,以便首先进行替换.

#define mySynthesize(op) @synthesize op = _ ## op
Run Code Online (Sandbox Code Playgroud)