您好!很长一段时间我很困惑!
很久很久以前,只有ansi版本就是atoi。
现在(很久以前)也有很多char版本。
但为什么宽字母版本在wtoi之前有一个uderline(' _')?
有谁可以告诉我为什么? 谢谢:))
答案 0 :(得分:5)
在大多数情况下,以前导下划线开头的函数是实现添加;它们不是C标准库的一部分。 (有例外,例如_Exit
是C标准库的一部分,但它尚未在Visual C ++实现中实现。)以前导下划线开头的标识符为reserved in the global namespace,因此使用它们对于非标准扩展,以避免与用户定义的名称冲突。
至于为什么C标准库中没有wtoi
:当广泛的字符函数被添加到C标准库时,可以理解atoi
接口是有缺陷的,因为{{ 3}}
请勿使用atoi
或_wtoi
。相反,请使用首选的strtol
和wcstol
函数,这两个函数都是C标准库的一部分。 (还有其他类似命名的转换函数用于其他类型,例如strtof
和wcstof
转换为float
和strtoull
以及wcstoull
转换为{{ 1}}。)
答案 1 :(得分:1)
Microsoft提供函数_atoi_l, _wtoi, _wtoi_l
作为特定于供应商的扩展。它们不是标准的C / C ++库函数。它们有许多这样的供应商特定功能,其名称源自标准C / C ++库函数。