Lobsters | 📄 原文链接 | 2026-10-11 收录

字符串转浮点:标准 C 里无法移植地检查转换错误

来源:sebsite.pw — 2026-10-09

📋 概述

作者延续上一篇关于 math_errhandling 的讨论,指出 strtod 等字符串转浮点函数同样受该宏影响,却不在 math.h 里:当实现不声明支持 errno(如 musl)时,溢出不会写入 errno;下溢是否报错更是完全由实现自定。POSIX 则要求溢出与下溢一律设置 errno = ERANGE,与标准 C 的措辞存在冲突。文章给出一份"如何正确检查错误"的清单,并认为标准在这里需要更明确的措辞。

🔑 核心要点

💡 金句

errno 在这些函数的描述里是被明确文档化的,而那段描述并未提及当 math_errhandling & MATH_ERRNO 为 0 时要设置 errno。这就暗示 POSIX 的行为并不符合标准。
← 返回 Lobsters 首页