it-swarm.com.ru

Удалите безопасные предупреждения (_CRT_SECURE_NO_WARNINGS) из проектов по умолчанию в Visual Studio

Есть ли способ установить по умолчанию для всех проектов удаление предупреждений прекомпилятора о безопасности, которые появляются при использовании таких функций, как scanf (). Я обнаружил, что вы можете сделать это, добавив строку в опцию проекта или #define _CRT_SECURE_NO_WARNINGS в начале кода.

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

#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif

В начале кода, или установить его в настройках прекомпилятора каждый раз, когда я начинаю новый проект.

155
Juan Martinez

Отметьте все нужные проекты в обозревателе решений.

Нажмите Alt-F7 или щелкните правой кнопкой мыши в обозревателе решений и выберите «Свойства»

Конфигурации: все конфигурации

Нажмите на строку Preprocessor Definitions, чтобы вызвать его редактор

Выберите Редактировать ...

Скопируйте «_CRT_SECURE_NO_WARNINGS» в белое поле «Определения препроцессора» вверху.

enter image description here

242
user2548100

Возможно, это потому, что я все еще новичок в VS и определенно новичок в C, но единственное, что позволило мне собрать, - это добавить

#pragma warning(disable:4996)

Вверху моего файла это подавило ошибку C4996, которую я получал с помощью sprintf.

Немного раздражает, но идеально подходит для моего крошечного кода и, безусловно, самый простой.

Я читал об этом здесь: https://msdn.Microsoft.com/en-us/library/2c8f766e.aspx

70
Shaun314

Не автоматически, нет. Вы можете создать шаблон проекта как BlueWandered предлагаемый или создать собственный список свойств, который вы можете использовать для своих текущих и всех будущих проектов.

  1. Откройте Менеджер свойств (View-> Property Manager)
  2. В диспетчере свойств щелкните правой кнопкой мыши свой проект и выберите «Добавить новый список свойств проекта».
  3. Дайте ему имя и создайте его в общем каталоге. Лист свойств будет добавлен ко всем целям сборки. 
  4. Щелкните правой кнопкой мыши новый лист свойств и выберите «Свойства». Это откроет свойства и позволит вам изменить настройки так же, как если бы вы редактировали их для проекта.
  5. Зайдите в «Общие свойства-> C/C++ -> Препроцессор»
  6. Отредактируйте настройку «Определения препроцессора» и добавьте _CRT_SECURE_NO_WARNINGS.
  7. Сохранить и все готово.

Теперь каждый раз, когда вы создаете новый проект, добавьте этот список свойств примерно так ...

  1. Откройте Менеджер свойств (View-> Property Manager)
  2. В диспетчере свойств щелкните правой кнопкой мыши свой проект и выберите «Добавить существующий список свойств проекта».

Преимущество в том, что вы получаете не только единое место для управления общими настройками, но и в любое время, когда вы изменяете настройки, они распространяются на ВСЕ проекты, которые его используют. Это удобно, если у вас много настроек, таких как _CRT_SECURE_NO_WARNINGS, или таких библиотек, как Boost, которые вы хотите использовать в своих проектах.

22
Captain Obvlious

Все решения здесь не работали на моем VS2013, однако я поместил #define _CRT_SECURE_NO_WARNINGS в stdafx.h непосредственно перед #pragma once, и все предупреждения были подавлены. Примечание: я пишу код только для целей создания прототипов, чтобы поддержать мои исследования, поэтому, пожалуйста, убедитесь, что вы понимаете значение этого метода при написании своего кода.

Надеюсь это поможет

20
PDF417

мои два цента за VS 2017:

Я могу подтвердить, что он работает в stdafx.h в обоих стилях:

а)

#pragma once
#define _CRT_SECURE_NO_WARNINGS 1 
#define _WINSOCK_DEPRECATED_NO_WARNINGS 1 

б) 

#define _CRT_SECURE_NO_WARNINGS 1 
#define _WINSOCK_DEPRECATED_NO_WARNINGS 1 
#pragma once

(Я добавил другое определение для сетевых вызовов MSDN ..) Конечно, я предпочитаю a). 

Я могу подтвердить, что: #define _CRT_SECURE_NO_WARNINGS (без значения) ДЕЛАЕТНЕРАБОТАЕТ.

PS реальная цель состоит в том, чтобы поместить эти определения ДО объявления функций, то есть до * .h

10
ingconti

Несмотря на то, что вы можете добавить _CRT_SECURE_NO_WARNINGS в свойства вашего проекта, самый простой способ - использовать stdafx.h для любых предупреждений и ошибок, просто убедитесь, что вы поместили следующую строку (и аналогичную) ДО

#pragma once

Также нет необходимости определять значение (то есть "1") для _CRT_SECURE_NO_WARNINGS, пока оно определено. Так должно выглядеть так:

#define _CRT_SECURE_NO_WARNINGS 

#pragma once
0
Michael Haephrati

Если ваш проект не использует stdafx.h, вы можете поместить следующие строки в качестве первых строк в вашем файле .cpp, и предупреждение компилятора должно исчезнуть - по крайней мере, для меня это было в Visual Studio C++ 2008.

#ifdef _CRT_SECURE_NO_WARNINGS
#undef _CRT_SECURE_NO_WARNINGS
#endif
#define _CRT_SECURE_NO_WARNINGS 1

Вполне нормально иметь комментарий и пустые строки перед ними.

0
R Sahu