我想禁用项目中的所有NSLog
。在项目中,我添加了一个库。当我尝试禁用除库以外的项目中的所有NSLog
时它工作正常。
但是当我尝试在库项目中添加它时,它会抛出错误。
我试过这段代码
// Enable debug (NSLog)
//#define DEVLOPENV 1 // comment this to disable the nslogs
#ifdef DEVLOPENV
# define NSLog(fmt, ...) NSLog((@"\n%s : [Line - %d] \n" fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
# define NSLog(fmt, ...)
#endif
xcode正在投掷 任何人都可以帮我解决这个错误。
答案 0 :(得分:1)
当宏在编译时展开时,您的代码将如下所示:
dict1 ? [temp addObject:dict1] : ;
不提供"否则"三元运算符的值是不可能的,因此是错误。
您可以像这样定义宏来解决问题:
#ifdef DEVLOPENV
# define NSLog(fmt, ...) NSLog((@"\n%s : [Line - %d] \n" fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
# define NSLog(fmt, ...) (void)(0)
#endif
您的代码将如下所示:
dict1 ? [temp addObject:dict1] : (void)(0);
(void)(0)
是一种无操作,实现了预期的行为。
但是,在这种特殊情况下,我建议避免使用三元运算符。经典if...else
结构为more readable and appropriate。
答案 1 :(得分:0)
你应该删除";"在定义的最后。
#define NSLog(fmt, ...) NSLog((@"\n%s : [Line - %d] \n" fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)