Ответ 1
Добавить по
Свойства конфигурации >> C/C++ >> Препроцессор >> Определения препроцессора >> _CRT_SECURE_NO_WARNINGS
У меня есть ошибка компиляции в моем простом оконном приложении MFC, сгенерированном из мастера с несколькими строками кода:
ошибка C4996: 'strncpy': эта функция или переменная может быть небезопасной. Вместо этого рассмотрите использование strncpy_s. Чтобы отключить устаревание, используйте _CRT_SECURE_NO_WARNINGS. Подробнее см. Интерактивную справку.
Я установил Configuration Properties>>C/C++>>Preporocessor>>Preprocessor Definitions>> _CRT_NONSTDC_NO_WARNINGS
Но это не помогло. У меня есть еще один очень близкий проект, который генерирует только предупреждение в этом месте и не имеет определения _CRT_NONSTDC_NO_WARNINGS
.
Только разница между проектами - это несколько разных параметров в мастере.
Почему _CRT_NONSTDC_NO_WARNINGS не помогает в первом проекте и почему второй проект компилируется без проблем без этого определения?
Добавить по
Свойства конфигурации >> C/C++ >> Препроцессор >> Определения препроцессора >> _CRT_SECURE_NO_WARNINGS
В разделе "Проект → Свойства → C/С++ → Препроцессор → Определения препроцессора" добавить _CRT_SECURE_NO_WARNINGS
Если вы находитесь в Visual Studio 2012 или позже, у него есть дополнительный параметр "Проверки SDL" в разделе "Свойства" → C/С++ → Общие
Рекомендуемые проверки жизненного цикла дополнительной безопасности (SDL); включает возможность включения дополнительных функций генерации защищенного кода и дополнительных предупреждений, связанных с безопасностью, в качестве ошибок.
По умолчанию используется значение YES. По какой-то причине I.E вы должны использовать защищенную версию strncpy. Если вы измените это на НЕТ, вы не получите ошибку при использовании небезопасной версии.
Добавление _CRT_SECURE_NO_WARNINGS
в Project → Properties → C/C++ → Preprocessor → Preprocessor Definitions у меня не сработало, не знаю почему.
Следующая подсказка работает: в файле stdafx.h, пожалуйста, добавьте
#define _CRT_SECURE_NO_DEPRECATE
перед включением других заголовочных файлов.
Для быстрого исправления или проверки я нахожу удобным просто добавить #define _CRT_SECURE_NO_WARNINGS
в верхнюю часть файла перед всеми #include
#define _CRT_SECURE_NO_WARNINGS
#include ...
int main(){
//...
}
Если вы находитесь в Visual Studio 2012 или позже, у него есть дополнительный параметр "Проверки SDL" в разделе "Свойства" → C/С++ → Общие - это правильный ответ, он работает для меня.