NSLog中的预处理程序错误

时间:2010-09-08 14:43:30

标签: objective-c iphone c-preprocessor

BlaBlaBla_prefix.pch中,我定义了以下内容:

#import "SMDeviceManager.h"
#define DeviceSpecificResourceName(name) [SMDeviceManager deviceSpecificResourceName:(name)];

但是如果我知道在我的代码中使用这个函数在一个NSog() - 调用中,我在编译时遇到以下错误:

  

预期“)”之前“;”令牌。

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

NSString *test = DeviceSpecificResourceName(@"eintest.png");
NSLog(@"%@", test);

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

1 个答案:

答案 0 :(得分:5)

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

删除最后一个分号。


如果您保留;,则语句NSLog(@"%@", DeviceSpecificResourceName(@"eintest.png"))将替换为

NSLog(@"%@", [SMDeviceManager deviceSpecificResourceName:(@"eintest.png")];);
//                                                                        ^

当然是语法错误。