zoukankan      html  css  js  c++  java
  • '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

  • 相关阅读:
    U盘 格式化 ext3 ext4
    MBR
    CentOS开机的时候卡在进度条一直进不去 F5(是关键)
    redis储存中文,客服端读取出现乱码
    redis 做为缓存服务器 注项!
    redis监控
    keepalived virtual_router_id 44
    你真的会用Gson吗?Gson使用指南
    你真的会用Retrofit2吗?Retrofit2完全教程
    Kotlin 初级读本
  • 原文地址:https://www.cnblogs.com/IS2120/p/6745954.html
Copyright © 2011-2022 走看看