Ho un semplice C++ con Boost in questo modo:C++ Boost: qual è la causa di questo avviso?
#include <boost/algorithm/string.hpp>
int main()
{
std::string latlonStr = "hello,ergr()()rg(rg)";
boost::find_format_all(latlonStr,boost::token_finder(boost::is_any_of("(,)")),boost::const_formatter(" "));
Questo funziona bene; sostituisce ogni occorrenza di(), con un ""
Tuttavia, ottengo questo avvertimento quando si compila:
sto usando MSVC 2008 Boost 1.37.0.
1>Compiling...
1>mainTest.cpp
1>c:\work\minescout-feat-000\extlib\boost\algorithm\string\detail\classification.hpp(102) : warning C4996: 'std::copy': 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'
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\xutility(2576) : see declaration of 'std::copy'
1> c:\work\minescout-feat-000\extlib\boost\algorithm\string\classification.hpp(206) : see reference to function template instantiation 'boost::algorithm::detail::is_any_ofF<CharT>::is_any_ofF<boost::iterator_range<IteratorT>>(const RangeT &)' being compiled
1> with
1> [
1> CharT=char,
1> IteratorT=const char *,
1> RangeT=boost::iterator_range<const char *>
1> ]
1> c:\work\minescout-feat-000\minescouttest\maintest.cpp(257) : see reference to function template instantiation 'boost::algorithm::detail::is_any_ofF<CharT> boost::algorithm::is_any_of<const char[4]>(RangeT (&))' being compiled
1> with
1> [
1> CharT=char,
1> RangeT=const char [4]
1> ]
mi potrebbe certamente disattivare l'avviso utilizzando
-D_SCL_SECURE_NO_WARNINGS
ma io sono un po 'riluttante a farlo prima di scoprire che cosa c'è che non va, o ancora più importante se il mio codice non è corretto.
Questo avviso mi fa impazzire, è come un "avvertimento" sul contenuto di una tazza di caffè caldo. – Clay
la cosa peggiore è che non esiste una "correzione" sana. La maggior parte degli avvertimenti viene emessa perché esiste un modo migliore, meno incline agli errori, per ottenere la stessa cosa. Possono essere * riparati *. Cosa dovresti fare su questo? Se si dispone di un array C non elaborato ed è necessario copiare i dati da o verso di essi, i puntatori sono l'unico tipo di iteratore disponibile. std :: copy è di gran lunga la migliore opzione più sicura da usare. O stanno suggerendo che torniamo a scrivere per loops per ottenere la stessa cosa? – jalf
Scommetto 100 rep che verrà rimosso nel primo SP insieme all'altro "non testano ciò che rilasciano?" problemi ... –