如何用C語言實現異常 狀況處理機制?

時間 2021-05-30 23:14:44

1樓:藥罐子千里冰封

用強型別的union (俗稱Algebraic Data Type)加Functor和Monad,完全代替辣雞Exception

2樓:

請參考C語言介面與實現第四章異常與斷言一章有利用setjmp/longjmp實現的簡單的try catch finally raise 的介面封裝

還可以參考:http://www.

3樓:顧露

正如馮冬君所言,setjmp/longjmp 的侷限性很大,無法實現C++中棧迴繞並清理的操作。這樣的異常機制即使勉強實現,也會導致「既不安全,也不優雅」的設計。

如果你只是關心在C語言中是否有較可靠的異常機制可用,而不關心其具體實現,那麼有 Windows SEH 可供參考。需要注意的是, SEH 是微軟的擴充套件實現,僅在Windows 平台可用。

Windows SEH (Structured Exception Handling) 是乙個作業系統實現的系統級異常處理機制,在 C 和(或) C++ 環境下均可用。

具體資料請參考:

(From MSDN)

Structured Exception Handling (C/C++)

Structured Exception Handling (Windows)

(From wikipedia)

Microsoft-specific exception handling mechanisms

c語言實現能否儲存資料?

我來補充一點吧。很多回答說到了檔案讀寫,這是對的,但是乙個應用程式儲存資料到硬碟也有主流的三種方式 1,使用自己設計的檔案格式,就比如說樓上有些回答直接把乙個變數的值寫進檔案,下次開啟程式直接讀檔案來得知上次執行的結果。2,使用 XML,JSON,INI 等檔案格式。其實這些檔案格式說到底還是純文字...

請問雙緩衝區c語言實現?

我就是這麼拽 include include include include include include include include using namespace std DWORD WINAPI Fun1 LPVOID lpParameter DWORD WINAPI Fun2 LPVO...

如何用程式語言實現三相配平計算?

水牛 你是要自動在AutoCAD裡排迴路相序吧。個人覺得,搞這麼複雜沒必要吧。因為一方面,雖然程式設計可以根據輸入的計算電流給出優化的相序組合方案,但這樣子的結果肯定是相序無規律的,配電箱中就會出現一排開關所接相序完全混亂無規律的現象,對配電箱的生產和檢修都不利。而一般情況下,配電箱都是按A,B,C...