web-dev-qa-db-fra.com

Avertissement Visual Studio C4996

Je reçois l'avertissement suivant 

warning C4996: 'std::_Uninitialized_copy0': 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\Microsoft visual studio 10.0\vc\include\memory 348

Je n'arrive pas à trouver une information qui aiderait à combattre cet avertissement. En regardant la sortie, il semble que cet avertissement ait quelque chose à voir avec Boost.Signals2 et auto_buffer.

Est-ce sûr d'ignorer ou puis-je l'enlever d'une manière ou d'une autre?

34
Anthony

Tout d'abord, je voudrais dire que j'aime beaucoup les avertissements du compilateur. J'appelle gcc avec -Wall -Wextra.

Toutefois, l’avertissement MSVC C4996 se déclenche généralement avec un code complètement valide. Les modifications proposées dans le texte d'avertissement compromettent souvent sérieusement la portabilité du code, sans pour autant améliorer sensiblement la qualité du code. Ainsi, je supprime régulièrement cet avertissement dans mes projets MSVC (Propriétés du projet-> C++ -> Avancé-> Désactiver les avertissements spécifiques).

Vérifiez également ceci et cela discussions.

51
ssegvic

Cette erreur est générée car le code qu'il génère n'est pas thread-safe. Cela signifie que si vous utilisez le codage multithread, certaines de vos E/S de flux peuvent (et vont probablement) être perdues car les tampons internes d'E/S sont partagés. Les fonctions de substitution suggérées ont éliminé ce problème.

0
DocDJ