Visual Studio对我大喊使用itoa()的说法是改为使用_itoa()

在我看来,它们是相同的功能。是什么赋予了?

最佳答案

除非遵循特定的命名约定(例如,以下划线开头),否则C运行时库实现不应引入标准中未包含的名称。 Microsoft的早期版本的编译器并未特别严格地遵循此规则,但是随着时间的流逝,Microsoft一直在朝着使它们的实现更符合标准的方向发展。因此,他们以前提供的会干扰用户 namespace 的函数一直在使用已保留给编译器实现的名称来实现,并且已不赞成使用旧名称。

如果定义了_CRT_NONSTDC_NO_WARNINGS,则MS编译器不会提示itoa()函数已被弃用。但是它仍然会提示它是不安全的(您必须定义_CRT_SECURE_NO_WARNINGS才能使该警告静音)。或使用更安全的函数版本(_itoa_s()),该函数为函数提供目标缓冲区大小
_itoa()itoa()都解析为库中完全相同的功能,直到相同的地址-名称上没有区别。

09-13 14:05