Удалите защищенные предупреждения (_CRT_SECURE_NO_WARNINGS) из проектов по умолчанию в Visual Studio
Есть ли способ установить по умолчанию для всех проектов, удаляющих защищенные предупреждения precompiler, которые возникают при использовании таких функций, как scanf(). Я обнаружил, что вы можете сделать это, добавив строку в проектную опцию или #define _CRT_SECURE_NO_WARNINGS
в начале кода.
Я нахожу, что неоднократно создаю новые проекты для решения конкурсов программирования, и это очень раздражает (и занимает ценное время), чтобы добавить:
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
В начале кода или для его установки в опциях прекомпилятора каждый раз при запуске нового проекта.
Ответы
Ответ 1
Отметьте все нужные проекты в проводнике решений.
Нажмите Alt-F7 или щелкните правой кнопкой мыши в проводнике решений и выберите "Свойства"
Конфигурации: все конфигурации
Нажмите на
Строка Определения препроцессора для вызова его редактора
Выбрать
Изменить...
Скопируйте "_CRT_SECURE_NO_WARNINGS" в белый квадрат "Определения спецификаций препроцессора" вверху.
![enter image description here]()
Ответ 2
Возможно, это было потому, что я все еще новичок в VS и определенно новичок в C, но единственное, что позволило мне создать, - это добавить
#pragma warning(disable:4996)
В верхней части моего файла это подавляло ошибку C4996, которую я получал с помощью sprintf
Немного раздражает, но отлично подходит для моей маленькой части кода и, безусловно, проще всего.
Я читал об этом здесь: https://msdn.microsoft.com/en-us/library/2c8f766e.aspx
Ответ 3
Не автоматически, нет. Вы можете создать шаблон проекта в качестве BlueWandered, предложив или создав пользовательский лист свойств, который вы можете использовать для своих текущих и всех будущих проектов.
- Откройте диспетчер свойств (View- > Property Manager)
- В Property Manager Щелкните правой кнопкой мыши по вашему проекту и выберите "Добавить новый лист свойств проекта"
- Дайте ему имя и создайте его в общем каталоге. Лист свойств будет добавлен ко всем целям сборки.
- Щелкните правой кнопкой мыши на новой странице свойств и выберите "Свойства". Это откроет свойства и позволит вам изменять настройки так же, как если бы вы редактировали их для проекта.
- Перейдите в "Общие свойства- > C/С++ → Препроцессор"
- Измените настройку "Определения препроцессора" и добавьте
_CRT_SECURE_NO_WARNINGS
.
- Сохраните, и все готово.
Теперь, когда вы создаете новый проект, добавьте этот лист свойств так...
- Откройте диспетчер свойств (View- > Property Manager)
- В Property Manager Щелкните правой кнопкой мыши на своем проекте и выберите "Добавить существующий лист свойств проекта"
Преимущество в том, что вы не только получаете одно место для управления общими настройками, но и при изменении настроек, которые они распространяют, для ВСЕХ проектов, которые его используют. Это удобно, если у вас есть множество настроек, таких как _CRT_SECURE_NO_WARNINGS
или библиотеки, такие как Boost, которые вы хотите использовать в своих проектах.
Ответ 4
Все решения здесь не работали на моем VS2013, однако я положил #define _CRT_SECURE_NO_WARNINGS
в stdafx.h перед #pragma once
, и все предупреждения были подавлены. Примечание. Я использую только прототипы для поддержки своих исследований, поэтому, пожалуйста, убедитесь, что вы понимаете последствия этого метода при написании кода.
Надеюсь, что это поможет
Ответ 5
мои два цента для VS 2017:
Я могу подтвердить, что он работает в stdafx.h как в этих стилях:
а)
#pragma once
#define _CRT_SECURE_NO_WARNINGS 1
#define _WINSOCK_DEPRECATED_NO_WARNINGS 1
b)
#define _CRT_SECURE_NO_WARNINGS 1
#define _WINSOCK_DEPRECATED_NO_WARNINGS 1
#pragma once
(Я добавил еще одно определение для сетевых вызовов MSDN..)
Конечно, я предпочитаю а).
Я могу подтвердить, что: #define _CRT_SECURE_NO_WARNINGS
(без значения) РАБОТАЕТ НЕ.
PS реальная точка состоит в том, чтобы поместить эти определения перед декларациями функций, то есть перед *.h
Ответ 6
Если ваш проект не использует stdafx.h, вы можете поместить следующие строки в качестве первых строк в вашем файле .cpp, и предупреждение компилятора должно исчезнуть - по крайней мере, для меня это было в Visual Studio C++ 2008.
#ifdef _CRT_SECURE_NO_WARNINGS
#undef _CRT_SECURE_NO_WARNINGS
#endif
#define _CRT_SECURE_NO_WARNINGS 1
Хорошо иметь комментарий и пустые строки перед ними.
Ответ 7
Даже если вы можете добавить _CRT_SECURE_NO_WARNINGS в свойства вашего проекта, самый простой способ - это использовать stdafx.h для любых предупреждений и ошибок, просто убедитесь, что вы поместили следующую строку (и аналогичную) ДО
#pragma once
Также нет необходимости определять значение (то есть "1") для _CRT_SECURE_NO_WARNINGS, пока оно определено. Так должно выглядеть так:
#define _CRT_SECURE_NO_WARNINGS
#pragma once
Ответ 8
просто скопируйте " _CRT_SECURE_NO_WARNINGS " и вставьте его в projects-> properties-> c/c++-> препроцессор-> определения препроцессора, нажмите ok.it будет работать