是否可能在运行时检测正在运行的应用程序是使用调试还是分发进行编译。
答案 0 :(得分:13)
在项目信息中,对于调试配置,添加“DEBUG”的预处理器宏(在GCC 4.2 - 预处理部分中)。
在您的代码中,您可以使用#ifdef查看是否定义了DEBUG,如果您想要包含或不包含调试版本的代码。或者你甚至可以设置一个变量(我无法想象为什么你会想要这个):
#ifdef DEBUG
BOOL isBuiltDebug = YES;
#else
BOOL isBuiltDebug = NO;
#endif
编辑:那么,另一种方法是在预处理器宏中定义一个布尔值,即:调试配置为“DEBUG_BUILD = 1”,Release配置为“DEBUG_BUILD = 0”。然后,您可以在代码中使用该值:
if (DEBUG_BUILD) {
....
}
请注意不要使用可能与您的代码中或您可能包含的任何.h文件中的名称相匹配的宏名称,因为预处理器将替换它,找到这些类型真的很痛苦虫子。
答案 1 :(得分:4)
无需考虑定义自定义预处理器宏,您只需编写一个像这样的自定义方法:
+ (BOOL) isInDebugMode
{
#ifndef __OPTIMIZE__ // Debug Mode
return YES;
#else
return NO;
#endif
}
或者只是在这些陈述中内联编写代码:
#ifndef __OPTIMIZE__ // Debug Mode
// Your debug mode code
#else
// Your release mode code
#endif
编译器自动设置的__OPTIMIZE__
预处理器设置,关于您的项目设置,因此您不必担心。