看到CHECK宏,开始以为和ASSERT一样,在release中不起作用。实际上是起作用的,会引起退出。下面是具体的源代码分析
32 #define CHECK(condition) \
33 LOG_ALWAYS_FATAL_IF( \
34 !(condition), \
35 "%s", \
36 __FILE__ ":" LITERAL_TO_STRING(__LINE__) \
37 " CHECK(" #condition ") failed.")
302 /*
303 * Log a fatal error. If the given condition fails, this stops program
304 * execution like a normal assertion, but also generating the given message.
305 * It is NOT stripped from release builds. Note that the condition test
306 * is -inverted- from the normal assert() semantics.
307 */
308 #ifndef LOG_ALWAYS_FATAL_IF
309 #define LOG_ALWAYS_FATAL_IF(cond, ...) \
310 ( (CONDITION(cond)) \
311 ? ((void)android_printAssert(#cond, LOG_TAG, ## __VA_ARGS__)