纯C中的异常处理[重复]

问题描述 投票:0回答:4

可能重复:
C:你如何模拟“异常”?

嗨,我知道异常处理在 C++ 中可用,但在 C 中不可用。但我也读到异常处理是从操作系统端提供的,那么 C 是否有任何函数从操作系统调用与 try catch 和 throw 相同的行为?谢谢。

c exception
4个回答
8
投票

C语言本身不支持异常处理。 然而,C 的异常处理方法确实存在于特定于平台+编译器的基础上。

在 Windows 中,例如 C 程序可以使用 SEH(结构化异常处理):

我过去见过这样的论点:C 函数对

setjmp
longjmp
是 C 中的异常处理。我认为它更接近弹出模式,但值得研究


2
投票

不是以独立于平台的方式。 这仅适用于硬件/操作系统级别的异常,不适用于软件异常。


2
投票

C 在标准库中提供了异常:setjmp()/longjmp()。


1
投票

我认为不存在真正的、纯粹的、可移植的 C 解决方案。 对于 Microsoft 编译器,您可以使用 __try __ except,请参阅 http://msdn.microsoft.com/en-us/library/zazxh1a9(VS.80).aspx

© www.soinside.com 2019 - 2024. All rights reserved.