einige Code Haben Sie das nicht von mir und seine Herstellung dieser Warnung atm:Compilerfehler: Funktionsaufruf mit Parametern, die unsicher sein können
iehtmlwin.cpp(264) : warning C4996: 'std::basic_string<_Elem,_Traits,_Ax>::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'
with
[
_Elem=char,
_Traits=std::char_traits<char>,
_Ax=std::allocator<char>
]
c:\program files (x86)\microsoft visual studio 8\vc\include\xstring(1680) : see declaration of 'std::basic_string<_Elem,_Traits,_Ax>::copy'
with
[
_Elem=char,
_Traits=std::char_traits<char>,
_Ax=std::allocator<char>
]
Dies ist der Code in Frage:
HRESULT STDMETHODCALLTYPE Read(void __RPC_FAR *pv, ULONG cb, ULONG __RPC_FAR *pcbRead)
{
if (prepend.size() > 0)
{
int n = min(prepend.size(), cb);
prepend.copy((char *) pv, n);
prepend = prepend.substr(n);
if (pcbRead)
*pcbRead = n;
return S_OK;
};
int rc = Read((char *) pv, cb);
if (pcbRead)
*pcbRead = rc;
return S_OK;
};
und Die Warnung bezieht sich auf die Zeile prepend.copy. Ich habe versucht, die Warnung zu googeln, kann aber nicht herausfinden, worum es geht. Kann mir bitte jemand helfen, das zu lösen?
Visual Studio 2005 SP1 Windows 7 RC1
.
Edit: prepend ist eine Zeichenkette, die auf die Warnung
typedef basic_string<char, char_traits<char>, allocator<char> > string;
ich endete mit #pragma warning (disable: 4996) als preprocessor define funktionierte nicht – Lodle
@alex - es nicht behauptet, 'n' ist [potenziell] zu groß. Sie werden gewarnt, eine Funktion zu verwenden, die einen Zielzeiger ohne Zielgröße verwendet. Für das, was es wert ist, D_SCL_SECURE_NO_WARNINGS zu definieren, um Warnungen zu unterdrücken, ist eine schlechte Idee. – jww
@Lodle - Odd, die 'Pragma Warnung (disable: 4996)' funktionierte nicht für mich in VS2010; Das Hinzufügen von '_SCL_SECURE_NO_WARNINGS' zu den Definitionen für jede einzelne Datei (und jeden separaten Build) schien den Trick zu machen. –