Visual Studio Предупреждение C4996

Я получаю следующее предупреждение

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

Я не могу найти какую-либо информацию, которая помогла бы бороться с этим предупреждением. Глядя на вывод, кажется, что это предупреждение как-то связано с Boost.Signals2 и auto_buffer.

Это безопасно игнорировать или я могу как-то удалить это?

2 ответа

Решение

Во-первых, я хотел бы сказать, что мне очень нравятся предупреждения компилятора. Я вызываю gcc с -Wall -Wextra.

Тем не менее, предупреждение MSVC C4996 в основном срабатывает на полностью действительный код. Изменения, предложенные в тексте предупреждения, часто серьезно подрывают переносимость кода, хотя они никогда существенно не улучшают качество кода. Поэтому я регулярно подавляю это предупреждение в моих проектах MSVC (Свойства проекта->C++-> Дополнительно-> Отключить определенные предупреждения).

Проверьте также это и это обсуждения.

Эта ошибка генерируется, потому что код, который она создает, не является потокобезопасным. Это означает, что если вы используете многопоточное кодирование, некоторые из ваших потоковых операций ввода-вывода могут (и, вероятно, будут) потеряны, потому что внутренние буферы ввода-вывода являются общими. Предложенные замещающие функции устранили эту проблему.

Другие вопросы по тегам