在VS2015中使用itoa()函数进行编译时,会产生如下报错信息,“The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _itoa. ”。该报错信息为“POSIX命名方式不推荐使用,推荐使用ISO C和C++的函数名itoa”。就是说,itoa()是采用POSIX方式命名的,而_itoa()是采用ISO C方式命名的。
1 产生原因
1.1 POSIX
POSIX的全称是Protable Operating System Interface of UNIX,即可移植操作系统接口。POSIX详细描述了一些函数,这些函数是在C标准库之外定义的,这些函数只能被部分的编译器所支持。
1.2 ANSI C
ANSI的全称是American National Standards Institute即美国国家标准协会。ANSI C则是ANSI对C语言发布的标准。使用C的软件开发者被鼓励遵循ANSI C文档的要求,因为它鼓励使用跨平台的代码。
ANSIC现在被几乎所有广泛使用的编译器支持。现在多数C代码是在ANSI C基础上写的。任何仅仅使用标准C并且没有任何硬件依赖假设的代码实际上能保证在任何平台上用遵循C标准的编译器编译成功。
1.3 不使用POSIX
从VC++2005文档中提到,微软不再支持传统的POSIX方式命名的C语言函数,取而代之的是在其函数名前加入下划线的函数名,即ANSI C方式命名的函数。
2 解决方法
基本的解决方法就是如提示信息中说的那样,使用ANSI C方式命名的函数来替代POSIX方式命名的函数。如果必须要使用POSIX方式命名的函数,可以通过修改项目的属性来实现。
在VS2015中选择“项目->XXX属性”,打开属性页。之后在左侧的树中选择“配置属性->C/C++->预处理器”,如图1所示。
图1 打开项目属性
在右侧的“预处理器定义”栏中选择“编辑”,如图2所示。
图2 编辑预处理器定义
最后,在弹出的预处理器定义的对话框中,输入“_CRT_NONSTDC_NO_DEPRECATE”和“
_CRT_SECURE_NO_WARNINGS”,分别表示使用非标准函数和不弹出警告,最后点击“确定”按键,如图3所示。
图3 添加预处理器
此时,就可以在程序中使用itoa()函数了。