第一個 - 就是默認情況下已經定義了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