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