2014-03-28 43 views
0

在C程序中,我試圖在assert()中測試幾個條件。 我面臨的問題是,打印錯誤消息後程序崩潰。我不希望這樣,我希望應用程序在打印出錯信息後正常退出,因爲我想將該程序進一步鏈接到另一個C#程序,並且我不希望爲後臺進程顯示崩潰提示。需要幫忙!打印後正常關閉應用程序斷言錯誤

asssert(10 == func(<some input>)); 

我正在使用它來檢查用戶的書面功能是否返回預期的答案。當它返回正確的答案它沒關係。但是當收到錯誤答案時,我必須在數據庫中標記出錯誤答案。但程序崩潰,assertionError既不在StandardError也不在StandardOutput中

+0

請張貼一些代碼。 – PoweredByOrange

+3

這不是什麼斷言用於。 assert只能用於調試,每個失敗的斷言都應該是一個致命的錯誤。 –

+0

我編輯了我的帖子一點! –

回答

1

您將不得不創建自己的函數或預處理器宏。

當你調用assert()時,其含義是「下面的表達式必須爲爲真,否則程序進入了一個致命的錯誤狀態」。因此,響應是終止它,留下一個核心轉儲,您可以使用它來檢查程序的變量並修復導致失敗斷言的錯誤。

優雅地處理用戶輸入是一個完全不同的任務,並不適用於assert()。除了其他原因之外,assert()在編譯爲發佈版本的程序中沒有嚴格限制,因此您不應該依賴程序的實際功能。