如果isConsoleLogActive
为YES,我在项目dlog中的代码下面应在控制台中打印值。
它给出错误,如运算符“已定义”需要标识符
#if defined ([Util isConsoleLogActive])// Operator 'defined' requires an identifier in this line
#define DLog(...) NSLog(__VA_ARGS__)
#define DTrace() NSLog(@"%s", __PRETTY_FUNCTION__)
#else
#define DLog(...) /* */
#define DTrace() /* */
#endif
如果我在.m中使用相同的代码(
[Util isConsoleLogActive]
),则效果很好。我只在#define
中遇到这个问题可能是什么问题。请给我一些想法。
最佳答案
以#
开头的各种命令是预处理器指令。这些将在构建时,应用程序实际执行之前的编译阶段之前执行。您应该使用预处理程序指令根据构建配置在应用程序中有条件地包含其他代码。但是,预处理器是在运行时处理特定平台上的条件执行的错误方法。为此,您需要标准的“if ... else”逻辑。
如果使用该语句的目标是确定给定的选择器是否存在,请尝试使用respondsToSelector。
关于ios - 运算符“已定义”需要标识符ios,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23468369/