zoukankan      html  css  js  c++  java
  • Compiler Error: Function call with parameters that may be unsafe

    如下的代码:

    #include <stdio.h>

    #include <string>

    #include <algorithm>

    #include <cassert>

    #include <cctype>

    #include <boost/algorithm/string.hpp>

    int main(int argc, char *argv[])

    {

                    char song[17] = "Book of Taliesyn";

                    boost::to_upper(song);

                    assert(std::string(song) == "BOOK OF TALIESYN");

                   

                    return 0;

    }

    编译的时候报错:

    Error      1              error C4996: 'std::_Transform1': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators' c:program files (x86)microsoft visual studio 12.0vcincludealgorithm           1026       1              Test13

    [分析]

    1. 搜索到如下的文章:

    https://stackoverflow.com/questions/903064/compiler-error-function-call-with-parameters-that-may-be-unsafe

    The warning is telling you that you risk a buffer overflow if n is too large -- which you know can't happen because of the way you just computed with a min, but the poor commpiler doesn't. I suggest you take the compiler's own advice and use -D_SCL_SECURE_NO_WARNINGS for this one source file...

    1. 关于如何修复: https://stackoverflow.com/questions/25046829/what-does-use-d-scl-secure-no-warnings-mean

    -D is a command line compiler flag which causes the rest of the text to be treated as if there was a #define in your code.

    In solution explorer, right click the project, select "properties". The project property page will open. Expand the ">C/C++" entry in the tree on the left and select "Preprocessor" under that. The top entry in the right pane should be "Preprocessor Definitions". In that edit box, add _SCL_SECURE_NO_WARNINGS, separating it from the other entries with a ;

    [解决]

     

    加上这个宏定义后,就编译通过了.

  • 相关阅读:
    run blackberry Sim&MDS4.7
    jsadd input name
    java memory
    silverlight Pivot Hearder
    eclipse tomcat server
    Monitor.Wait初探(5)
    Monitor.Wait初探(4)
    Monitor.Wait初探(2)
    解决远程注册表打不开,Cannot open HKEY_LOCAL_MACHIN…
    Windows界面自动化技术发展概要(二)
  • 原文地址:https://www.cnblogs.com/time-is-life/p/9359563.html
Copyright © 2011-2022 走看看