回答
C語言中有try-catch語句嗎?還是有人制作的外部圖書館?將是非常有用的
在Windows上有SEH,但你真的不應該使用它的一般應用程序的用法。沒有像C++析構函數那樣的東西,就不可能寫出真正的異常安全代碼。
如果不是,有沒有辦法可以確定一個變量是否是一個數組?
是的。你自己跟蹤它。
沒有sizeof ...? – tekknolagi 2011-04-25 02:24:18
@tekknolagi:不僅僅是一個指向數組的塊的指針,你必須自己傳遞數組長度。 (我假設你正在談論傳遞給函數?) – 2011-04-25 02:45:51
我的意思是使用sizeof()作爲一種方式來確定是否作爲一個數組,假設由sizeof()返回的值將大於,說,sizeof(4)。 – tekknolagi 2011-04-25 03:06:56
C中沒有try-catch語句,但是您可以使用jump buffers來構建exception mechanism。但是,這可能是一個非常糟糕的想法,因爲現在有辦法在拋出異常時自動釋放資源。
如果您指的是void *
作爲變量,則無法確定它是否爲數組。但是,您也可以在應用程序中創建邏輯來實現runtime type information (RTTI)。
你可以構建一個*資源泄漏*異常機制....沒有析構函數,幾乎不可能在那裏寫出安全的代碼.... – 2011-04-25 01:54:19
當然,但你可以說使用malloc同樣的事情。 – 2011-04-25 02:10:33
我不明白你的觀點。如果沒有A.析構函數或B.' finally'子句,就無法正確管理資源。你不能拿到C中的任何一個。 – 2011-04-25 02:11:52
該死的,你剛剛發佈的鏈接有'void main's! – 2011-04-25 01:55:50
如果編譯器可以判斷一個變量是一個數組,這樣你就可以。只要查看聲明的位置(或者在動態分配數組的情況下爲malloc'd)。
sizeof(指針)始終是相同的......:/ – 2011-04-25 02:09:12
@比利 - 不一定。 IIRC,該標準僅要求'void *'足夠大以容納任何(對象)指針類型,而不是指針類型必須具有相同的大小。 – 2011-04-25 02:38:25
@Chris:據我所知,沒有。 C(和C++)不要求函數指針類型與數據指針類型的大小相同,但大多數情況下指針是指針。 C允許'int','float','struct'和'union'類型之間的區別。但是,sizeof(struct A *)'和sizeof(struct B *)'必須相同。參見該標準的第6.2.5.27節。 (並且一般要求'指向 兼容類型的合格或不合格版本應具有相同的表示和對齊要求') – 2011-04-25 02:53:29
try-catch是一個針對C++等面向對象環境的錯誤處理方案。 ANSI C不是面向對象的,它需要你聲明你的變量類型。在C中,錯誤處理主要通過檢查被調用函數的返回值來執行。你可以看到在這裏的凌亂螺紋:ANSI C equivalent of try/catch?
我開發exceptions4c,異常處理系統中C(可移植的ANSI C)是目前支持:throw
,try
,catch
,finally
和一些更多的好東西。例如,它支持配置模式,因此您可以自動釋放資源。您也可以處理信號(如SIGFPE
和SIGSEGV
),就好像它們是例外情況一樣。
- 1. C語言中的switch語句
- 2. 瞭解C語言中的語句
- 3. c語言中的多語句算法
- 4. 在C語言中切換語句
- 5. C語言,printf語句循環
- 6. C/C++語言中的Conky
- 7. 在C語言中的switch語句中的案例
- 8. Beginner C++ Help:if語句中的if語句
- 9. C語言塊語句,逗號和控制表達式C
- 10. 的C語句
- 11. 用C語言中的antlr3解析一些特定的語句
- 12. 「formatted」C語言
- 13. C語言
- 14. Shellcode c語言
- 15. 用c語言
- 16. 如何使用C語言中的單元測試語言C?
- 17. C語言的Java建模語言?
- 18. C/C++的腳本語言?
- 19. 更改C語言中switch語句的代碼?
- 20. IF語句中的兩個條件(C語言)
- 21. '在C語言中設置定時'語句的輸出#
- 22. C語言中的複合語句是左值還是右值?
- 23. 如果在C語言中有雙值的語句?
- 24. 在C語言中正確使用if/else語句的問題
- 25. AND運算符在C語言中的while語句
- 26. 在C++編程語言中返回2語句的含義
- 27. C語言中的char比較if語句
- 28. C語言while循環中的switch語句
- 29. 使用C語言中的預處理語句時出錯#
- 30. C++到c#語句
我不寒而慄想象你寫的程序,不知道如何判斷一個變量是否是一個數組,而不是每個訪問在try/catch中都包含... – drysdam 2011-04-25 02:17:14
不是每個訪問 - 只是檢查數組大小是痛苦的一點。這就是它的形式。 – tekknolagi 2011-04-25 02:25:02