第一个 - 就是默认情况下已经定义了NDEBUG,所以在#undef之前声明不起作用。 第二个 - 他们工作,但我没有收到DDMS日志记录。Android NDK assert.h问题
如果有一些android特定的assert.h?
或者我只是做错了什么?
第一个 - 就是默认情况下已经定义了NDEBUG,所以在#undef之前声明不起作用。 第二个 - 他们工作,但我没有收到DDMS日志记录。Android NDK assert.h问题
如果有一些android特定的assert.h?
或者我只是做错了什么?
如果你想编译代码与断言,那么你可以做到这一点的方法有三种:
通常程序会在assert()
被调用后由于SIGSEGV
信号而崩溃,默认情况下NDEBUG
被定义,您可以在编译过程中添加标志(LOCAL_CFLAGS += -UNDEBUG
)而关闭,但不适用于我的情况。
我发现了另一个解决方案是使用__android_log_assert
,简单地如下文限定,并与assert3
替换assert()
:
#define assert3(e...) __android_log_assert(e, "TAG", #e)
-UNDEBUG实际上是为我工作的。非常感谢 – 2016-08-01 11:15:12
无论'NDEBUG'定义应取决于编译器标记。如果你在发布模式下编译,应该在调试模式下定义,显然它不应该。你可以检查(如果你的IDE设置不回答这个问题),通过加上'#ifdef NDEBUG \ n#错误糟糕,NDEBUG定义了\ n #endif'(用实际换行符替换'\ n')文件并编译它。 – 2012-02-04 12:51:09