Pol*_*878 10 c c++ itoa visual-studio
Visual Studio对我说使用itoa()说法来_itoa()代替?
在我看来,它们是相同的功能.是什么赋予了?
Mic*_*urr 23
AC运行时库实现不应该引入不在标准中的名称,除非它们遵循某种命名约定(例如以下划线开头).微软编译器的早期版本没有特别严格地遵循这一规则,但随着时间的推移,微软一直在努力使其实现更符合标准.因此,他们用来提供的函数会侵入用户的命名空间,他们一直使用为编译器实现保留的名称来实现,并且一直在弃用旧名称.
如果_CRT_NONSTDC_NO_WARNINGS已定义,则MS编译器不会抱怨itoa()不推荐使用的函数.但它仍然会抱怨它不安全(你必须定义_CRT_SECURE_NO_WARNINGS安静的警告).或者使用函数(_itoa_s())的更安全版本,该函数提供具有目标缓冲区大小的函数
双方_itoa()并itoa()解析到库到相同的地址完全一样的功能-有除了在这个名字没有什么区别.
itoa不是标准C.
"这个函数没有在ANSI-C中定义,也不是C++的一部分,但是有些编译器支持它." - cplusplus.com
所以MSVS告诉你使用_itoa告诉你它不是标准的C++,你应该这样标记它.我认为这是为了向后兼容,并且这种表示法是为了可读性和区别.