31

我不太明白为什么我们需要区分错误代码(std::error_code)和错误condition(std::error_condition),它们不是一回事吗?错误条件与错误代码的优势是什么?

4

2 回答 2

15

来自http://en.cppreference.com/w/cpp/error/error_condition

std::error_condition 是与平台无关的错误代码。与 std::error_code 一样,它由整数值和 std::error_category 唯一标识,但与 std::error_code 不同,该值不依赖于平台。

因此,优点是您的错误代码并不特定于您在使用std::error:condition.

带着std::error_code

每个 std::error_code 对象包含一对源自操作系统或某些低级接口的错误代码

因此,error_code将引用特定于您的平台、硬件等的东西。

两者都使用可能是有利的。这error_condition是“可移植的抽象”,因此将是提供给用户的通用错误消息,并且error_code将是对特定调试有用的平台相关信息。

[error_condition] 的典型实现包含一个整数数据成员(值)和一个指向 std::error_category 的指针。

于 2013-05-22T08:51:45.307 回答
11

我在这里找到了这个问题的最简单答案:http: //blog.think-async.com/2010/04/system-error-support-in-c0x-part-5.html

  • class std::error_code- 表示操作(例如系统调用)返回的特定错误值。
  • std::error_condition- 你想要测试的东西,并且可能在你的代码中做出反应。

我认为它也适用于 C++11。

于 2013-05-22T14:31:15.663 回答