VS2015編譯時“ The POSIX name for this item is deprecated.”的分析

棉猴發表於2018-06-07

VS2015中使用itoa()函式進行編譯時會產生如下報錯資訊,The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _itoa. ”。該報錯資訊為“POSIX命名方式不推薦使用,推薦使用ISO CC++的函式名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則是ANSIC語言釋出的標準。使用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()函式了。

相關文章