6

您好!迷惑了我好久!

很久很久以前,只有 ansi 版本是 atoi 。

现在(也是很久以前)有一个宽字符版本。

但是为什么宽字符版本在 wtoi 之前有一个 uderline('_') 呢?

谁能告诉我为什么?谢谢 :)

4

2 回答 2

5

在大多数情况下,以下划线开头的函数是实现添加;它们不是 C 标准库的一部分。(也有例外,例如_Exit,它是 C 标准库的一部分,尽管它尚未在 Visual C++ 实现中实现。)以下划线开头的标识符保留在全局命名空间中,因此它们用于非标准扩展以避免与用户定义的名称冲突。

至于为什么wtoiC 标准库中没有:当宽字符函数被添加到 C 标准库时,据了解atoi接口有缺陷,因为无法检测转换是否成功或失败

不要使用atoi_wtoi。相反,使用优选strtolwcstol函数,它们都是 C 标准库的一部分。(对于其他类型,还有其他类似命名的转换函数,例如strtofand wcstofto convert to floatand strtoulland wcstoullto convert to unsigned long long。)

于 2014-04-19T07:59:07.610 回答
1

Microsoft 将这些功能_atoi_l, _wtoi, _wtoi_l作为供应商特定的扩展提供。它们不是标准的 C/C++ 库函数。它们有许多这样的供应商特定函数,其名称源自标准 C/C++ 库函数。

于 2014-04-19T06:43:24.480 回答