VS2015編譯時“ The POSIX name for this item is deprecated.”的分析
在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()函式了。
相關文章
- 使用VS2015從TFS獲取專案後編譯報錯編譯
- [譯] 優化 Swift 的編譯時間優化Swift編譯
- JavaScript的預編譯過程分析JavaScript編譯
- 編譯程式(compiler)的簡單分析編譯Compile
- 程式的編譯和連結原理分析編譯
- 執行時框架,編譯時框架框架編譯
- Vue3原始碼分析——編譯模組和編譯器Vue原始碼編譯
- 演示如何建立 POSIX 相容的間隔定時器定時器
- 前端工程中的編譯時優化前端編譯優化
- CMake編譯Qt工程時的問題編譯QT
- 深入分析 Javac 編譯原理Java編譯原理
- C++物件模型:編譯分析C++物件模型編譯
- 編譯原理之語法分析-自下而上分析(四)編譯原理語法分析
- 編譯原理之語法分析-自下而上分析(三)編譯原理語法分析
- Android編譯時註解框架系列1-什麼是編譯時註解Android編譯框架
- 提前編譯:AOT-Native Image 和執行時編譯 JIT編譯
- 交叉編譯場景分析(arm-linux)(四)--編譯readline和ncurses編譯Linux
- 優化 Xcode 編譯時間優化XCode編譯
- [譯]使用Go Cloud的Wire進行編譯時依賴注入GoCloud編譯依賴注入
- posix timer
- [譯] Python 的時間序列分析:簡介Python
- Hollis原創|深入分析Java的編譯原理Java編譯原理
- 在使用make編譯時,修改原始檔的註釋內容,是否會重新編譯?編譯
- Qt 獲取程式編譯時間QT編譯
- Go 編譯時加入版本資訊Go編譯
- server_name 原始碼分析Server原始碼
- Docker環境編譯時的錯誤記錄Docker編譯
- Laravel6.18.0 NPM 編譯時遇到的問題LaravelNPM編譯
- JS 預編譯程式碼例項分析JS編譯
- 【C進階】22、條件編譯分析編譯
- Go編譯原理系列4(語法分析)Go編譯原理語法分析
- Go編譯原理系列3(詞法分析)Go編譯原理詞法分析
- 從編譯後的程式碼,分析 Angular @Injectable 的工作原理編譯Angular
- 如何分析和提高(C/C++)程式的編譯速度?C++編譯
- PHP編譯configure時常見錯誤,和PHP7.1.4 編譯安裝PHP編譯
- POSIX命名方案
- 使用RecyclerView動態改變item時遇到的坑View
- 深入剖析Java即時編譯器(上)Java編譯