回答
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/C++语言中的Conky
- 5. 在C语言中的switch语句中的案例
- 6. 的C语句
- 7. 用C语言中的antlr3解析一些特定的语句
- 8. 用c语言
- 9. C语言
- 10. 如何使用C语言中的单元测试语言C?
- 11. C语言的Java建模语言?
- 12. C/C++的脚本语言?
- 13. 在C语言中正确使用if/else语句的问题
- 14. C语言中的char比较if语句
- 15. C语言while循环中的switch语句
- 16. 在C++编程语言中返回2语句的含义
- 17. 如果在C语言中有双值的语句?
- 18. C语言语义规范
- 19. 语法与C语言
- 20. C语言中的Windows语音识别#
- 21. c语言的中断
- 22. C语言程序在switch语句中跳过部分函数。
- 23. 在C语言中使用switch语句存储数据#
- 24. c switch语句
- 25. C#if语句范围内的语句
- 26. 学习C++语言
- 27. c语言问题
- 28. 计算C语言
- 29. 在Objective - C语言
- 30. C++语言可变
我不寒而栗想象你写的程序,不知道如何判断一个变量是否是一个数组,而不是每个访问在try/catch中都包含... – drysdam 2011-04-25 02:17:14
不是每个访问 - 只是检查数组大小是痛苦的一点。这就是它的形式。 – tekknolagi 2011-04-25 02:25:02