• 'function': was declared deprecated


    http://blog.csdn.net/is2120/article/details/7208770
    1. 警告消息 'function': was declared deprecated
    Compiler Warning (level 1) C4996

    Error Message

    'function': was declared deprecated

    The compiler encountered a function that was marked with deprecated. The function may no longer be supported in a future release. You can turn this warning off with thewarning pragma (example below).

    C4996 is generated for the line on which the function is declared and for the line on which the function is used.

    You will see C4996 if you are using members of the <hash_map> and <hash_set> header files in the std namespace. SeeThe stdext Namespace for more information.

    Some CRT and Standard C++ Library functions have been deprecated in favor of new, more secure functions. For more information on deprecated functions, seeSecurity Enhancements in the CRT andSafe Libraries: Standard C++ Library.

    C4996 can also occur if you use MFC or ATL functions that were deprecated for security reasons. To suppress these warnings, see_AFX_SECURE_NO_WARNINGS and_ATL_SECURE_NO_WARNINGS.

    Example//z 2012-1-18 11:29 AM IS2120@CSDN

    The following sample generates C4996.

    // C4996.cpp
    // compile with: /W1
    // C4996 warning expected
    #include <stdio.h>
    
    // #pragma warning(disable : 4996)
    void func1(void) {
       printf_s("\nIn func1");
    }
    
    __declspec(deprecated) void func1(int) {
       printf_s("\nIn func2");
    }
    
    int main() {
       func1();
       func1(1);
    }

    C4996 can also occur if you do not use a checked iterator when compiling with _SECURE_SCL 1. SeeChecked Iterators for more information.

    The following sample generates C4996.

    // C4996_b.cpp
    // compile with: /EHsc /W1
    #define _SECURE_SCL 1
    #include <algorithm>
    using namespace std;
    using namespace stdext;
    int main() {
       int a [] = {1, 2, 3};
       int b [] = {10, 11, 12};
       copy(a, a + 3, b);   // C4996
       copy(a, a + 3, checked_array_iterator<int *>(b, 3));   // OK
    }
    //z 2012-1-18 11:29 AM IS2120@CSDN
    2. 消除的几种方法(不建议正式的项目中使用,只是用于自己做的一些小工具项目)
    _SCL_SECURE_NO_WARNINGS 

    Calling any one of the potentially unsafe methods in the Standard C++ Library will result inCompiler Warning (level 1) C4996. To disable this warning, define the macro_SCL_SECURE_NO_WARNINGS in your code:

    2.1 #define _SCL_SECURE_NO_WARNINGS

    Other ways to disable warning C4996 include:

    • 2.2 Using the /D (Preprocessor Definitions)compiler option:

      cl /D_SCL_SECURE_NO_WARNINGS [other compiler options] myfile.cpp
    • 2.3 Using the /w compiler option:

      cl /wd4996 [other compiler options] myfile.cpp
    • 2.4 Using the #pragma warning directive:

      #pragma warning(disable:4996)

    Also, you can manually change the level of warning C4996 with the /w<l><n> compiler option. For example, to set warning C4996 to level 4:

    2.5 cl /w44996 [other compiler options] myfile.cpp
    //z 2012-1-18 11:29 AM IS2120@CSDN
    http://blog.csdn.net/is2120/article/details/7208770

    3. 遇到一个链接错误 unresolved external symbol "const type_info::`vftable'" (??_7type_info@@6B@)
    The symbol is defined in msvcrt.lib. You are not linking with that library because you specified the /NODEFAULTLIB linker option. Either remove that option, or add msvcrt.lib as an input library. Thanks for taking the time to report this!

    Mitchell Slep
    Visual C++ Compiler Team

    RTTI is on by default in Visual C++ 2005, so you need to explicitly disable it by adding /GR- to the command line.

    Thank you,

    Dean Wills
    Visual C++ Team

  • 相关阅读:
    牛客练习赛27 水图(思维+暴搜)
    差分
    矩阵化一维
    倍增法 求公共祖先
    vector 牛逼 +lower_bound+ upper_bound
    cmp和sort
    字符串的比较
    s 贪心
    太鼓达人 (有位运算的作用,但可能理解错了哈哈)
    kao shi di er ti(还没有订正)
  • 原文地址:https://www.cnblogs.com/IS2120/p/6745954.html
Copyright © 2020-2023  润新知