Disabling Warnings generated via _CRT_SECURE_NO_DEPRECATE

前端 未结 10 1544
说谎
说谎 2020-12-02 06:00

What is the best way to disable the warnings generated via _CRT_SECURE_NO_DEPRECATE that allows them to be reinstated with ease and will work across Visual Stud

相关标签:
10条回答
  • 2020-12-02 06:31

    i work on a multi platform project, so i can't use _s function and i don't want pollute my code with visual studio specific code.
    my solution is disable the warning 4996 on the visual studio project. go to Project -> Properties -> Configuration properties -> C/C++ -> Advanced -> Disable specific warning add the value 4996.
    if you use also the mfc and/or atl library (not my case) define before include mfc _AFX_SECURE_NO_DEPRECATE and before include atl _ATL_SECURE_NO_DEPRECATE.
    i use this solution across visual studio 2003 and 2005.

    p.s. if you use only visual studio the secure template overloads could be a good solution.

    0 讨论(0)
  • 2020-12-02 06:32

    you can disable security check. go to

    Project -> Properties -> Configuration properties -> C/C++ -> Code Generation -> Security Check

    and select Disable Security Check (/GS-)

    0 讨论(0)
  • 2020-12-02 06:33

    You could disable the warnings temporarily in places where they appear by using

    #pragma warning(push)
    #pragma warning(disable: warning-code) //4996 for _CRT_SECURE_NO_WARNINGS equivalent
    // deprecated code here
    #pragma warning(pop)
    

    so you don't disable all warnings, which can be harmful at times.

    0 讨论(0)
  • 2020-12-02 06:35

    Another late answer... Here's how Microsoft uses it in their wchar.h. Notice they also disable Warning C6386:

    __inline _CRT_INSECURE_DEPRECATE_MEMORY(wmemcpy_s) wchar_t * __CRTDECL
    wmemcpy(_Out_opt_cap_(_N) wchar_t *_S1, _In_opt_count_(_N) const wchar_t *_S2, _In_ size_t _N)
    {
        #pragma warning( push )
        #pragma warning( disable : 4996 6386 )
            return (wchar_t *)memcpy(_S1, _S2, _N*sizeof(wchar_t));
        #pragma warning( pop )
    } 
    
    0 讨论(0)
提交回复
热议问题