【发布时间】:2016-05-01 01:59:01
【问题描述】:
POSIX 将 errno 值 ERANGE 记录为
结果太大。
EOVERFLOW 记录为
值太大而无法存储在数据类型中。
这两者之间的语义区别是什么?特别是考虑到ERANGE 被 ISO 9899 使用(例如在strtol 中),其语义为EOVERFLOW 描述。这两个errno 值是否仅因历史原因而不同?
如果可能,请用适当的来源备份您的论点。
【问题讨论】:
-
建议使用“
EOVERFLOW被记录为 ...”来回报适当来源的青睐,因为在 C11 规范中ERANGE和EOVERFLOW不是。 -
@chux 这就是为什么我说“由 POSIX 记录为”。具体页面为errno.h。 ISO 9899 没有记录
ERANGE的含义。 -
我明白了 - 最初没有“按 POSIX”阅读以适用于第二行。 - 阅读您发布/评论的内容当然是有意义的。