Ich habe eine einfache C++ mit Boost-wie folgt aus:C++ Boost: Was ist die Ursache dieser Warnung?
#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(" "));
Dies funktioniert gut; es ersetzt jedes Vorkommen von() mit einem „“
Allerdings habe ich diese Warnung beim Kompilieren:
Ich bin mit MSVC 2008 1.37.0 steigern.
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> ]
Ich könnte sicherlich die Warnung
-D_SCL_SECURE_NO_WARNINGS
mit deaktivieren, aber ich bin ein bisschen zögern, das zu tun, bevor ich herausfinden, was falsch ist, oder was noch wichtiger ist, wenn mein Code nicht korrekt ist.
Diese Warnung macht mich verrückt, es ist wie die "Warnung" über den Inhalt einer heißen Tasse Kaffee. – Clay
Das Schlimmste daran ist, dass es keine vernünftige "Reparatur" gibt. Die meisten Warnungen werden ausgegeben, weil es einen besseren, weniger fehleranfälligen Weg gibt, dasselbe zu erreichen. Sie können * behoben * werden. Was sollst du mit diesem tun? Wenn Sie ein Raw-C-Array haben und Daten zu oder von ihm kopieren müssen, sind Zeiger die einzige Art von Iteratoren, die verfügbar sind. std :: copy ist mit Abstand die beste und sicherste Option. Oder schlagen sie vor, dass wir wieder für Loops schreiben, um dasselbe zu erreichen? – jalf
Ich wette 100 rep, dass es in der ersten SP zusammen mit den anderen entfernt werden "testen sie nicht, was sie veröffentlichen?" Probleme ... –