您好!迷惑了我好久!
很久很久以前,只有 ansi 版本是 atoi 。
现在(也是很久以前)有一个宽字符版本。
但是为什么宽字符版本在 wtoi 之前有一个 uderline('_') 呢?
谁能告诉我为什么?谢谢 :)
您好!迷惑了我好久!
很久很久以前,只有 ansi 版本是 atoi 。
现在(也是很久以前)有一个宽字符版本。
但是为什么宽字符版本在 wtoi 之前有一个 uderline('_') 呢?
谁能告诉我为什么?谢谢 :)
在大多数情况下,以下划线开头的函数是实现添加;它们不是 C 标准库的一部分。(也有例外,例如_Exit,它是 C 标准库的一部分,尽管它尚未在 Visual C++ 实现中实现。)以下划线开头的标识符保留在全局命名空间中,因此它们用于非标准扩展以避免与用户定义的名称冲突。
至于为什么wtoiC 标准库中没有:当宽字符函数被添加到 C 标准库时,据了解atoi接口有缺陷,因为无法检测转换是否成功或失败。
不要使用atoi或_wtoi。相反,使用优选strtol和wcstol函数,它们都是 C 标准库的一部分。(对于其他类型,还有其他类似命名的转换函数,例如strtofand wcstofto convert to floatand strtoulland wcstoullto convert to unsigned long long。)
Microsoft 将这些功能_atoi_l, _wtoi, _wtoi_l作为供应商特定的扩展提供。它们不是标准的 C/C++ 库函数。它们有许多这样的供应商特定函数,其名称源自标准 C/C++ 库函数。