2011-09-07 132 views
1

我已經搜索,但無法找到(或如果)我可以在xcode 4/ios 5.0中的c assert()之後跨越或繼續。我正在使用C++而不是objective-c。我是否需要定義自己的斷言才能實現這一目標?如何在ios/xcode中聲明c後繼續執行或繼續執行?

謝謝〜

+0

需要更多信息。斷言檢查什麼?斷言是在你的代碼中還是在你鏈接的代碼中? –

+0

您的應用程序是否停止在'assert()'中運行? – Nekto

+0

如何編譯NDEBUG? – stefaanv

回答

1

斷言通常不會被忽略。他們在那裏讓程序員與其他程序員溝通,「這永遠不會發生」。如果您好奇如果繼續經過斷言會發生什麼情況,請將其註釋掉並查看您的程序在通常失敗後的行爲。

0

assert() S中的目的是停止執行(和/或把你扔到一個調試器),當被斷言條件爲假。因此,它不會在斷言之後「繼續」,因爲它表示違反了某些先決條件/不變條件,這些條件/不變條件總會導致後來的不良事件(tm)。

0

「assert(expr)」只是(NDEBUG未定義)的簡寫形式「if(expr == 0)abort();」。也許這是一個比使用assert更好的方法(沒有放棄())。