Есть ли способ установить по умолчанию для всех проектов удаление предупреждений прекомпилятора о безопасности, которые появляются при использовании таких функций, как scanf (). Я обнаружил, что вы можете сделать это, добавив строку в опцию проекта или #define _CRT_SECURE_NO_WARNINGS
в начале кода.
Я постоянно создаю новые проекты для решения программных конкурсов, и это действительно раздражает (и занимает драгоценное время), чтобы добавить:
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
В начале кода, или чтобы установить его в настройках прекомпилятора каждый раз, когда я начинаю новый проект.
c++
visual-studio
precompiler
Хуан Мартинес
источник
источник
Ответы:
Отметьте все нужные проекты в обозревателе решений.
Нажмите Alt-F7 или щелкните правой кнопкой мыши в обозревателе решений и выберите «Свойства»
Конфигурации: все конфигурации
Нажмите на строку «Определения препроцессора», чтобы вызвать его редактор.
Выберите Изменить ...
Скопируйте «_CRT_SECURE_NO_WARNINGS» в белое поле «Определения препроцессора» вверху.
источник
Возможно, это потому, что я все еще новичок в VS и определенно новичок в C, но единственное, что позволило мне собрать, было добавление
Вверху моего файла это подавило ошибку C4996, которую я получал с помощью sprintf
Немного раздражает, но идеально подходит для моего крошечного кода и, безусловно, самый простой.
Я читал об этом здесь: https://msdn.microsoft.com/en-us/library/2c8f766e.aspx
источник
#pragma warning(push)
/#pragma warning(pop)
вместо.Не автоматически, нет. Вы можете создать шаблон проекта в соответствии с предложением BlueWandered или создать собственный лист свойств, который можно использовать для текущих и всех будущих проектов.
_CRT_SECURE_NO_WARNINGS
.Теперь каждый раз, когда вы создаете новый проект, добавьте этот список свойств примерно так ...
Преимущество здесь состоит в том, что вы не только получаете единое место для управления общими настройками, но и каждый раз, когда вы изменяете настройки, они распространяются на ВСЕ проекты, которые его используют. Это удобно, если у вас есть много настроек, таких как
_CRT_SECURE_NO_WARNINGS
или библиотеки вроде Boost, которые вы хотите использовать в своих проектах.источник
Все приведенные здесь решения не сработали на моем VS2013, однако я поместил
#define _CRT_SECURE_NO_WARNINGS
файл stdafx.h как раз перед тем, как#pragma once
все предупреждения были подавлены. Примечание: я пишу код только для целей создания прототипов, чтобы поддержать мои исследования, поэтому, пожалуйста, убедитесь, что вы понимаете значение этого метода при написании своего кода.Надеюсь это поможет
источник
stdafx.h
находится?мои два цента за VS 2017:
Я могу подтвердить, что он работает в stdafx.h в обоих стилях:
а)
б)
(Я добавил другое определение для сетевых вызовов MSDN ..) Конечно, я предпочитаю a).
Я могу подтвердить, что: #define _CRT_SECURE_NO_WARNINGS (без значения) НЕ РАБОТАЕТ.
PS реальная цель состоит в том, чтобы поместить эти определения ДО объявления функций, то есть до * .h
источник
просто скопируйте " _CRT_SECURE_NO_WARNINGS " и вставьте его в проекты- > свойства-> c / c ++ -> препроцессор-> определения препроцессора, нажмите ОК. Это будет работать
источник
Если ваш проект не использует stdafx.h, вы можете поместить следующие строки в качестве первых строк в вашем файле .cpp, и предупреждение компилятора должно исчезнуть - по крайней мере, для меня это было в Visual Studio C ++ 2008.
Вполне нормально иметь комментарий и пустые строки перед ними.
источник
Даже если вы можете добавить _CRT_SECURE_NO_WARNINGS в свойства вашего проекта, самый простой способ - использовать stdafx.h для любых предупреждений и ошибок, просто убедитесь, что вы поместили следующую строку (и аналогичную) ДО
Также нет необходимости определять значение (то есть «1») для _CRT_SECURE_NO_WARNINGS, пока оно определено. Так должно выглядеть так:
источник
#pragma once
определяется реализацией, но соответствует общему стандарту де-факто в Visual Studio. Если это имеет значение для вас, независимо от того, определили ли вы символ препроцессора перед прагмой или после него, то у вас неправильная конфигурация проекта (это предполагает, что вы - излишне - приравниваете «скомпилированные заголовки» и «stdafx.h»). " )