1. 程式人生 > >OpenGL報錯:fopen:this function or variable maybe unsafe

OpenGL報錯:fopen:this function or variable maybe unsafe

VS2015+OpenGL+win10 64bit 編譯報錯:error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use_CRT_SECURE_NO_WARNINGS. See online help for details. 
1、原因:由於微軟覺得之前函式不安全,從12版本之後很多函式重寫了,fopen被fopen_s替代,這樣函式的用法也與之前也有所不同。

2、解決方法:

     a、用fopen_s來替代foepn函式:
在定義FILE * fp 之後,

fopen的用法是: fp = fopen(filename,"w")。

fopen_s的用法是:定義另外一個變數errno_t err,err = fopen_s(&fp,filename,"w")。

返回值的話,對於fopen來說,開啟檔案成功的話返回檔案指標(賦值給fp),開啟失敗則返回NULL值;

對於fopen_s來說,開啟檔案成功返回0,失敗返回非0。之所以出錯是因為fopen_s比fopen多了溢位檢測,更安全一些。此外還有同樣的情況還有get與get_s的比較,strcpy strcpy_s的比較,他們的共同點都是用來一些不可預料的行為。


     b、開啟專案屬性,點選C/C++目錄下的前處理器,將“_CRT_SECURE_NO_WARNINGS”複製到框內“win32、_DEBUG、_CONCLE、_LIB"的下面,點選確認即可,編譯就可以通過。