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但另一方面它在编译时失败了.我究竟做错了什么?你能帮我么?
#define DeviceSpecificResourceName(name) [SMDeviceManager deviceSpecificResourceName:(name)];
// ^ remove
删除最后一个分号.
如果你保留;,声明NSLog(@"%@", DeviceSpecificResourceName(@"eintest.png"))将被替换为
NSLog(@"%@", [SMDeviceManager deviceSpecificResourceName:(@"eintest.png")];);
// ^
Run Code Online (Sandbox Code Playgroud)
这当然是语法错误.