Visual Studio对我大喊使用itoa()
的说法是改为使用_itoa()
?
在我看来,它们是相同的功能。是什么赋予了?
最佳答案
除非遵循特定的命名约定(例如,以下划线开头),否则C运行时库实现不应引入标准中未包含的名称。 Microsoft的早期版本的编译器并未特别严格地遵循此规则,但是随着时间的流逝,Microsoft一直在朝着使它们的实现更符合标准的方向发展。因此,他们以前提供的会干扰用户 namespace 的函数一直在使用已保留给编译器实现的名称来实现,并且已不赞成使用旧名称。
如果定义了_CRT_NONSTDC_NO_WARNINGS
,则MS编译器不会提示itoa()
函数已被弃用。但是它仍然会提示它是不安全的(您必须定义_CRT_SECURE_NO_WARNINGS
才能使该警告静音)。或使用更安全的函数版本(_itoa_s()
),该函数为函数提供目标缓冲区大小_itoa()
和itoa()
都解析为库中完全相同的功能,直到相同的地址-名称上没有区别。