为什么在函数_wtoi中wtoi之前有一个下划线,其中ansi版本是atoi?

时间:2014-04-19 06:39:02

标签: visual-c++ wchar

您好!很长一段时间我很困惑!

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

现在(很久以前)也有很多char版本。

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

有谁可以告诉我为什么? 谢谢:))

2 个答案:

答案 0 :(得分:5)

在大多数情况下,以前导下划线开头的函数是实现添加;它们不是C标准库的一部分。 (有例外,例如_Exit是C标准库的一部分,但它尚未在Visual C ++实现中实现。)以前导下划线开头的标识符为reserved in the global namespace,因此使用它们对于非标准扩展,以避免与用户定义的名称冲突。

至于为什么C标准库中没有wtoi:当广泛的字符函数被添加到C标准库时,可以理解atoi接口是有缺陷的,因为{{ 3}}

请勿使用atoi_wtoi。相反,请使用首选的strtolwcstol函数,这两个函数都是C标准库的一部分。 (还有其他类似命名的转换函数用于其他类型,例如strtofwcstof转换为floatstrtoull以及wcstoull转换为{{ 1}}。)

答案 1 :(得分:1)

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