avuto qualche codice che non è mia e la sua produzione di questo avvertimento atm:Errore del compilatore: chiamata di funzione con parametri che può essere pericoloso
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>
]
questo è il codice in questione:
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;
};
e l'avviso si riferisce alla linea prepend.copy. Ho provato a googling l'avvertimento, ma non riesco a capire di cosa si tratta. Qualcuno può aiutarmi a risolvere questo per favore.
Visual Studio 2005 SP1 Windows 7 RC1
.
Edit: anteporre è una stringa che viene typedefed
typedef basic_string<char, char_traits<char>, allocator<char> > string;
ho finito con l'uso di #pragma warning (disable: 4996) come il preprocessore define non ha funzionato – Lodle
@alex - il suo non affermare 'n' è [potenzialmente] troppo grande. Si viene avvisati sull'utilizzo di una funzione che accetta un puntatore di destinazione senza una dimensione di destinazione. Per quello che vale, definire D_SCL_SECURE_NO_WARNINGS per sopprimere gli avvertimenti è una cattiva idea. – jww
@Lodle - Dispari, il 'pragma warning (disable: 4996)' non ha funzionato per me in VS2010; aggiungere '_SCL_SECURE_NO_WARNINGS' ai define per ogni singolo file (e ogni build separata) sembrava fare il trucco. –