Удалите защищенные предупреждения (_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 будет работать