Czy istnieje sposób, aby ustawić domyślnie dla wszystkich projektów usuwanie bezpiecznych ostrzeżeń prekompilatora, które pojawiają się podczas korzystania z funkcji takich jak scanf (). Odkryłem, że możesz to zrobić, dodając wiersz w opcji projektu lub #define _CRT_SECURE_NO_WARNINGS
na początku kodu.
Ciągle tworzę nowe projekty do rozwiązywania konkursów programistycznych, a dodawanie:
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
Na początku kodu lub aby ustawić go w opcjach prekompilatora za każdym razem, gdy rozpoczynam nowy projekt.
c++
visual-studio
precompiler
Juan Martinez
źródło
źródło
Odpowiedzi:
Zaznacz wszystkie pożądane projekty w eksploratorze rozwiązań.
Naciśnij klawisze Alt-F7 lub kliknij prawym przyciskiem myszy w eksploratorze rozwiązań i wybierz „Właściwości”
Konfiguracje: wszystkie konfiguracje
Kliknij wiersz Definicje preprocesora, aby wywołać jego edytor
Wybierz Edytuj ...
Skopiuj „_CRT_SECURE_NO_WARNINGS” do białego pola Definicje preprocesora u góry.
źródło
Być może dlatego, że wciąż jestem nowy w VS i zdecydowanie nowy w C, ale jedyną rzeczą, która pozwoliła mi zbudować, było dodanie
W górnej części mojego pliku pomijało to błąd C4996, który otrzymywałem za pomocą sprintf
Trochę denerwujące, ale idealne dla mojego małego kodu i zdecydowanie najłatwiejsze.
Przeczytałem o tym tutaj: https://msdn.microsoft.com/en-us/library/2c8f766e.aspx
źródło
#pragma warning(push)
/#pragma warning(pop)
zamiast.Nie automatycznie, nie. Możesz utworzyć szablon projektu zgodnie z sugestią BlueWandered lub utworzyć niestandardowy arkusz właściwości, którego będziesz mógł używać w bieżących i wszystkich przyszłych projektach.
_CRT_SECURE_NO_WARNINGS
.Teraz za każdym razem, gdy tworzysz nowy projekt, dodaj ten arkusz właściwości w ten sposób ...
Korzyścią jest to, że nie tylko masz jedno miejsce do zarządzania wspólnymi ustawieniami, ale za każdym razem, gdy zmieniasz ustawienia, są one propagowane do WSZYSTKICH projektów, które z nich korzystają. Jest to przydatne, jeśli masz wiele ustawień
_CRT_SECURE_NO_WARNINGS
lub bibliotek takich jak Boost, których chcesz używać w swoich projektach.źródło
Wszystkie rozwiązania tutaj nie działały na moim VS2013, jednak wstawiłem plik stdafx.h
#define _CRT_SECURE_NO_WARNINGS
tuż przed#pragma once
i wszystkie ostrzeżenia zostały zniesione. Uwaga: koduję tylko w celach prototypowych w celu wsparcia moich badań, więc upewnij się, że rozumiesz implikacje tej metody podczas pisania kodu.Mam nadzieję że to pomoże
źródło
stdafx.h
znajduje?moje dwa centy za VS 2017:
Mogę potwierdzić, że działa w stdafx.h oba w tych stylach:
za)
b)
(Dodałem kolejną definicję dla połączeń sieciowych MSDN ..) Oczywiście wolę a).
Mogę potwierdzić, że: # zdefiniować _CRT_SECURE_NO_WARNINGS (bez wartości) NIE DZIAŁA.
PS prawdziwym celem jest umieszczenie tych definicji PRZED deklaracjami funkcji, tj. Przed * .h
źródło
po prostu skopiuj „ _CRT_SECURE_NO_WARNINGS ” wklej go na projekty-> właściwości-> c / c ++ -> preprocesor-> definicje preprocesora kliknij ok. to zadziała
źródło
Jeśli twój projekt nie używa pliku stdafx.h, możesz umieścić następujące wiersze jako pierwsze wiersze w pliku .cpp, a ostrzeżenie kompilatora powinno zniknąć - przynajmniej w przypadku Visual Studio C ++ 2008.
Można mieć komentarz i puste wiersze przed nimi.
źródło
Nawet jeśli możesz dodać _CRT_SECURE_NO_WARNINGS do właściwości projektu, najłatwiejszym sposobem jest użycie pliku stdafx.h do wszelkiego rodzaju ostrzeżeń i wyłączania błędów, po prostu upewnij się, że umieściłeś następujący wiersz (i podobne) PRZED
Nie ma również potrzeby definiowania wartości (tj. „1”) dla _CRT_SECURE_NO_WARNINGS, o ile jest ona zdefiniowana. Powinno więc wyglądać tak:
źródło
#pragma once
jest zdefiniowane w ramach implementacji, ale jest zgodne z powszechnym de facto standardem w Visual Studio. Jeśli ma to dla ciebie znaczenie, niezależnie od tego, czy zdefiniowałeś symbol preprocesora przed pragmą, czy po nim, oznacza to, że masz zepsutą konfigurację projektu (zakłada to, że nadmiernie utożsamiasz „prekompilowane nagłówki” i „stdafx.h” „ ).