Gibt es eine Möglichkeit, standardmäßig für alle Projekte die Sicherheitswarnungen des Precompilers zu entfernen, die bei Verwendung von Funktionen wie scanf () angezeigt werden? Ich habe festgestellt, dass Sie dies tun können, indem Sie eine Zeile in der Projektoption oder eine #define _CRT_SECURE_NO_WARNINGS
am Anfang des Codes hinzufügen .
Ich finde mich immer wieder dabei, neue Projekte zum Lösen von Programmierwettbewerben zu erstellen, und es ist wirklich ärgerlich (und braucht wertvolle Zeit), Folgendes hinzuzufügen:
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
Am Anfang des Codes oder um ihn bei jedem Start eines neuen Projekts in den Precompiler-Optionen festzulegen.
c++
visual-studio
precompiler
Juan Martinez
quelle
quelle
Antworten:
Markieren Sie alle gewünschten Projekte im Solution Explorer.
Drücken Sie Alt-F7 oder klicken Sie mit der rechten Maustaste in den Lösungs-Explorer und wählen Sie "Eigenschaften".
Konfigurationen: Alle Konfigurationen
Klicken Sie auf die Zeile Präprozessordefinitionen, um den Editor aufzurufen
Wählen Sie Bearbeiten ...
Kopieren Sie "_CRT_SECURE_NO_WARNINGS" in das weiße Feld "Präprozessordefinitionen" oben.
quelle
Es mag sein, dass ich noch neu in VS und definitiv neu in C bin, aber das einzige, was ich bauen konnte, war das Hinzufügen
Am Anfang meiner Datei wurde dadurch der C4996-Fehler unterdrückt, den ich mit sprintf erhalten habe
Ein bisschen nervig, aber perfekt für mein kleines Stück Code und bei weitem am einfachsten.
Ich habe hier darüber gelesen: https://msdn.microsoft.com/en-us/library/2c8f766e.aspx
quelle
#pragma warning(push)
/#pragma warning(pop)
.Nicht automatisch, nein. Sie können eine Projektvorlage erstellen, wie von BlueWandered vorgeschlagen, oder ein benutzerdefiniertes Eigenschaftenblatt erstellen, das Sie für Ihre aktuellen und alle zukünftigen Projekte verwenden können.
_CRT_SECURE_NO_WARNINGS
.Fügen Sie jetzt jedes Mal, wenn Sie ein neues Projekt erstellen, dieses Eigenschaftenblatt wie folgt hinzu ...
Der Vorteil hierbei ist, dass Sie nicht nur einen einzigen Ort zum Verwalten allgemeiner Einstellungen erhalten, sondern diese bei jeder Änderung an ALLE Projekte weitergeben, die sie verwenden. Dies ist praktisch, wenn Sie viele Einstellungen wie
_CRT_SECURE_NO_WARNINGS
oder Bibliotheken wie Boost haben, die Sie in Ihren Projekten verwenden möchten.quelle
Alle Lösungen hier funktionierten auf meinem VS2013 nicht, aber ich habe die
#define _CRT_SECURE_NO_WARNINGS
in die stdafx.h eingefügt, kurz bevor die#pragma once
und alle Warnungen unterdrückt wurden. Hinweis: Ich codiere nur für Prototyping-Zwecke, um meine Forschung zu unterstützen. Stellen Sie daher sicher, dass Sie die Auswirkungen dieser Methode beim Schreiben Ihres Codes verstehen.Hoffe das hilft
quelle
stdafx.h
sich?meine zwei Cent für VS 2017:
Ich kann bestätigen, dass es in stdafx.h in beiden Stilen funktioniert:
ein)
b)
(Ich habe eine weitere Definition für MSDN-Netzwerkanrufe hinzugefügt.) Natürlich bevorzuge ich a).
Ich kann Folgendes bestätigen: #define _CRT_SECURE_NO_WARNINGS (ohne Wert) FUNKTIONIERT NICHT .
PS Der eigentliche Punkt ist, diese Definitionen VOR Funktionsdeklarationen zu setzen, dh vor * .h
quelle
Kopieren Sie einfach " _CRT_SECURE_NO_WARNINGS " und fügen Sie es in Projekte-> Eigenschaften-> c / c ++ -> Präprozessor-> Präprozessordefinitionen ein. Klicken Sie auf OK. Es wird funktionieren
quelle
Wenn Ihr Projekt stdafx.h nicht verwendet, können Sie die folgenden Zeilen als erste Zeilen in Ihre CPP-Datei einfügen, und die Compiler-Warnung sollte verschwinden - zumindest für mich in Visual Studio C ++ 2008.
Es ist in Ordnung, Kommentare und Leerzeilen vor sich zu haben.
quelle
Obwohl Sie _CRT_SECURE_NO_WARNINGS zu den Eigenschaften Ihres Projekts hinzufügen können , ist es am einfachsten, stdafx.h für jede Art von Warnung und Fehler zu verwenden. Stellen Sie jedoch sicher, dass Sie die folgende Zeile (und ähnliches) VORHER einfügen
Es ist auch nicht erforderlich, einen Wert (dh "1") für _CRT_SECURE_NO_WARNINGS zu definieren, solange dieser definiert ist. So sollte es aussehen:
quelle
#pragma once
ist implementierungsdefiniert, folgt jedoch dem in Visual Studio üblichen De-facto-Standard. Wenn es für Sie einen Unterschied macht, ob Sie das Präprozessorsymbol vor oder nach dem Pragma definiert haben, liegt eine fehlerhafte Projektkonfiguration vor (dies setzt voraus, dass Sie "vorkompilierte Header" und "stdafx.h" zu Unrecht gleichsetzen " ).