日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

_CRT_SECURE_NO_WARNINGS宏-转

發布時間:2024/4/14 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 _CRT_SECURE_NO_WARNINGS宏-转 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正如大家所知,如果我們寫出這樣的代碼:

1int?_tmain(int?argc, _TCHAR*?argv[])
2{
3???? fopen("test.txt","r");
4????return?0;
5}

?

在vs 2005,2008下,會收到如下警告:

c:"documents and settings"administrator"桌面"test"test.cpp(9) : warning 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.

?? c:"program files"microsoft visual studio 8"vc"include"stdio.h(234) : 參見“fopen”的聲明

?

正如這個警告所言,產生的原因時這個方法不是安全的CRT,當然,建議使用安全的CRT,但如果不想用(有時候為了安全性,得多寫幾行代碼),要禁止這個警告 ,得定義一個宏

#define _CRT_SECURE_NO_WARNINGS

?

一開始,我以為這個宏應該出現在fopen (當然,以及類示CRT)之間。但事實上應該是將這個宏定義在stdio.h之前。

?

也就是說,如下代碼還是會報這個警告:

1#define?_CRT_SECURE_NO_WARNINGS
2int?_tmain(int?argc, _TCHAR*?argv[])
3{
4???? fopen("test.txt","r");
5????return?0;
6}

?

正確的做法應該是

1#define?_CRT_SECURE_NO_WARNINGS
2#include?<stdio.h>

?

問題是解決了,回過頭來一想,我怎么會有這樣的想法呢,這個方法本身的編譯應該在調用之前嘛,

唉,一時糊涂。看看這個方法體的定義:

1_CRT_INSECURE_DEPRECATE(fopen_s) _CRTIMP __checkReturn FILE?*?__cdecl fopen(__in_z?const?char?*?_Filename, __in_z?const?char?*?_Mode);

?

1#ifndef _CRT_INSECURE_DEPRECATE
2#ifdef _CRT_SECURE_NO_WARNINGS
3#define?_CRT_INSECURE_DEPRECATE(_Replacement)
4#else

5#define?_CRT_INSECURE_DEPRECATE(_Replacement) _CRT_DEPRECATE_TEXT("This function or variable may be unsafe. Consider using " #_Replacement " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.")

6#endif
7#endif
8

總結

以上是生活随笔為你收集整理的_CRT_SECURE_NO_WARNINGS宏-转的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。