可能是重复问题:
C:如何模拟“异常”?
您好,我知道C++中有异常处理,但C语言中没有。但我也读到过操作系统提供异常处理,所以难道没有任何函数可以在C中调用来实现与try catch和throw相同的行为吗?谢谢。
可能是重复问题:
C:如何模拟“异常”?
您好,我知道C++中有异常处理,但C语言中没有。但我也读到过操作系统提供异常处理,所以难道没有任何函数可以在C中调用来实现与try catch和throw相同的行为吗?谢谢。
C语言本身不支持异常处理。但是在特定的平台和编译器上可以使用C语言的异常处理方式。
例如,在Windows中,C程序可以使用SEH异常处理。
我曾经看到过一些关于C函数对setjmp
和longjmp
的争论,认为它是C语言中的异常处理。我认为更接近于“弹射模式”,但值得探讨。
这并不是以平台无关的方式实现的。而且这只适用于硬件/操作系统级别的异常,而不是软件异常。
C语言在标准库中提供了异常处理机制:setjmp()/longjmp()。
我认为没有真正的、纯粹的、可移植的 C 语言解决方案。 对于微软编译器,您可以使用 __try __except,请参见 http://msdn.microsoft.com/en-us/library/zazxh1a9(VS.80).aspx