NSLog中的预处理程序错误

San*_*ier 0 iphone objective-c c-preprocessor

BlaBlaBla_prefix.pch我定义以下内容:

#import "SMDeviceManager.h"
#define DeviceSpecificResourceName(name) [SMDeviceManager deviceSpecificResourceName:(name)];
Run Code Online (Sandbox Code Playgroud)

但是,如果我知道在我的代码中使用此函数在NSog() - 调用中,我在编译期间得到以下错误:

在";"之前预期")" 令牌.

但是如果我将输出保存在变量中,而不是直接调用NSLog中的函数,它就可以工作.

NSString *test = DeviceSpecificResourceName(@"eintest.png");
NSLog(@"%@", test);
Run Code Online (Sandbox Code Playgroud)

这会记录预期值.B但另一方面它在编译时失败了.我究竟做错了什么?你能帮我么?

ken*_*ytm 5

#define DeviceSpecificResourceName(name) [SMDeviceManager deviceSpecificResourceName:(name)];
//                                                                                          ^ remove

删除最后一个分号.


如果你保留;,声明NSLog(@"%@", DeviceSpecificResourceName(@"eintest.png"))将被替换为

NSLog(@"%@", [SMDeviceManager deviceSpecificResourceName:(@"eintest.png")];);
//                                                                        ^
Run Code Online (Sandbox Code Playgroud)

这当然是语法错误.