gpt4 book ai didi

unix - 我应该在 Unix 上为 errno 使用 system_category 还是 generic_category?

转载 作者:行者123 更新时间:2023-12-04 12:42:57 26 4
gpt4 key购买 nike

C++0x 有两个预定义的 error_category对象:generic_category()system_category() .据我目前所知,system_category()应该用于操作系统返回的错误,generic_category()应该用于在 std::errc 中找到的通用值,对应于 errno值。

但是,在类Unix系统上应该怎么做,其中errno值是操作系统返回的错误?我应该使用 system_category() (这在非类 Unix 系统上是错误的,需要一个 #ifdef ),或者我应该使用 generic_category() (对于非标准 errno 值,在类 Unix 系统上哪个是错误的)?

最佳答案

您打算使用 system_category() 报告来自操作系统(任何一种,包括基于 POSIX 的操作系统,例如 Unix)的错误。正如 C++ 标准库函数所做的那样 - 请参阅下面来自 C++11 标准的引用:

17.6.5.14 Value of error codes [value.error.codes]

1 Certain functions in the C++ standard library report errors via a std::error_code (19.5.2.1) object. Thatobject’s category() member shall return std::system_category() for errors originating from the operatingsystem, or a reference to an implementation-defined error_category object for errors originatingelsewhere. The implementation shall define the possible values of value() for each of these error categories.[ Example: For operating systems that are based on POSIX, implementations are encouraged to define thestd::system_category() values as identical to the POSIX errno values, with additional values as definedby the operating system’s documentation. Implementations for operating systems that are not basedon POSIX are encouraged to define values identical to the operating system’s values. For errors that donot originate from the operating system, the implementation may provide enums for the associated values.—end example ]

关于unix - 我应该在 Unix 上为 errno 使用 system_category 还是 generic_category?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7542822/

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