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

Nor*_*rSD 6 wchar visual-c++

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

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

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

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

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

Jam*_*lis 5

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

至于为什么wtoiC标准库中没有:当广泛的字符函数被添加到C标准库时,可以理解atoi界面是有缺陷的,因为无法检测转换是成功还是失败.

不要使用atoi_wtoi.相反,请使用preferred strtolwcstolfunctions,它们都是C标准库的一部分.(还有其它类型,例如其他类似命名的转换函数strtofwcstof转换为floatstrtoullwcstoull转换成unsigned long long).