Q
纯C异常处理库
3
A
回答
3
一种方式来实现类似的结果,以C++异常处理是使用setjmp和longjmp的。查看维基百科页面获得一个简单的例子:http://en.wikipedia.org/wiki/Setjmp.h。查看Lua解释器的源代码以了解真实世界的例子。
请注意,这不会是try/catch的真正实现,因为您可以从C++调用库并获得实际的异常。
0
XXL就是这样一个库。
0
OSSP ex库似乎满足您的要求。它利用上下文切换功能,并且是线程安全的。编写和记录得很好,就像所有的OSSP组件一样。
7
您可以试试exceptions4c;它是ANSI C中的一个异常处理库,支持:throw
,try
,catch
,finally
以及其他一些好东西。例如,它支持配置模式,因此您可以自动释放资源。您也可以处理信号(如SIGFPE
和SIGSEGV
),就好像它们是例外情况一样。
它在setjmp
和longjmp
(标准C库)之上实现,它是免费软件,因此您可以阅读和修改源代码。
哦,顺便说一下,我是作者:)请看看它,并将其与other alternatives进行比较,以查看哪个最适合您。
0
试试这个。
#define TRY char *__exc_message = NULL; do
#define THROW(exc) { __exc_message = exc; break; }
#define CATCH(exc) while(0); if(__exc_message != NULL) { exc = __exc_message;
#define FINALLY }
void Test(int a, int b)
{
char *exc = NULL;
TRY
{
if(a < b) THROW("A < B!");
if(a > b) THROW("A > B!");
TRACE_INFO("Ok :-)");
}
CATCH(exc)
{
TRACE_ERROR(exc);
}
FINALLY
{
TRACE_INFO("Finally...");
}
}
相关问题
- 1. 异常纯C处理
- 2. C#类库异常处理
- 3. C++异常处理
- 4. C++异常处理
- 5. C++处理异常
- 6. 异常处理C++
- 7. C++异常处理
- 8. C#异常处理
- 9. CMD异常处理C/C++
- 10. c异常处理sql异常#
- 11. python异常与C++异常处理
- 12. 库中的异常处理
- 13. 处理数据库异常
- 14. C++异常处理失败
- 15. C#自动异常处理
- 16. C++构造异常处理
- 17. C++异常处理查询
- 18. C++何时处理异常
- 19. PHP异常处理vs C#
- 20. 未处理的异常(C++)
- 21. C#ThreadPool QueueUserWorkItem异常处理
- 22. c#类的异常处理
- 23. 异常处理在c#
- 24. Objective-C异常处理
- 25. 处理AccessViolation异常C#
- 26. C#异常处理类
- 27. 异常处理:多次处理异常
- 28. php异常处理异常
- 29. 异常处理
- 30. 异常处理
@Tim是的,C++ trows异常和C没有,因此他寻找一个库在C中实现相同。我没有看到这里很难理解。 –
有这篇文章:http://www.on-time.com/ddj0011.htm和这个http://www.di.unipi.it/~nids/docs/longjump_try_trow_catch.html – xanatos
@ChristianRau我重读它又多了几次,最后看到了你所看到的。做了一些编辑,对于噪音感到抱歉(但最初很难理解) –