gpt4 book ai didi

c - __try 和 __exception 可移植性

转载 作者:行者123 更新时间:2023-12-02 22:29:30 25 4
gpt4 key购买 nike

您好,再次打扰一下

我正在阅读 Intel 的“Detecting Multiprocessor Topology in IA-32 Architecture”。我正在重新编写示例。但是我在代码中读到了这句话 __try 和 __except。

我在 MSDN Microsoft 网页上找到了一些信息,但我使用的是 gcc 编译器/链接器

__try 和 __except 是 gcc 中的有效语句吗?__try 和 __except 是 *nux 环境下的可移植语句吗?在 C 中是否存在比 __try 和 __except 语句更好的模式来处理异常?

提前致谢。

最佳答案

一般注意事项

根据 MSDN__try__except 是对C 语言的扩展。因此,它们不能开箱即用。

对于某些应用程序,可以使用宏和 setjmp/longjmp 构造来模仿它们的行为。一般来说,情况不会如此。特别是,MSDN 指出

The __except expression executes in the scope of the __try body.

仅使用宏是无法实现的。

您的问题

are __try and __except valid sentences in gcc?

不,它们不是,因为 gcc 不支持 C 的这种 Microsoft 方言。

are __try and __except portable sentences on *nux environments?

不,它们不是,尽管也有一些方法可以在 *nix 上实现类似的异常处理。

do exist a better mode than __try and __except sentences for exception handling in C?

在进行异常处理时,有充分的理由使用 C++。具有析构函数的 C++ 作用域对象在出现异常时比标准 C 资源管理更健壮。因此,尽管有些实现以某种方式为 C 提供 trycatch,但我建议不要使用它们,而是支持 C++。 C++ 中的异常处理是标准的一部分,因此受到所有符合标准的编译器的支持,没有可移植性问题。

关于c - __try 和 __exception 可移植性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12513209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com