Visual Studio: Wie kann ich folgende Warnung ausschalten?
-
1>c:\wxwidgets\include\wx\datetime.h(1095) : warning C4996: 'localtime': This function or variable may be unsafe. Consider using localtime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\programme\microsoft visual studio 9.0\vc\include\time.inl(114) : see declaration of 'localtime'Ich will ja nicht alle Warnungen ausschalten, nur diese, weil die eben nicht von mir ist.
-
Na, wie das geht, steht doch in der Warning selbst drin. Lies die Warning nochmal richtig.
-
Ich will ja nicht alle Warnungen ausschalten, nur diese, weil die eben nicht von mir ist.
-
#pragma warning( push ) #pragma warning( disable : 4996 ) #include <ganz-boese-datei.h> #pragma warning( pop )
-
ja, die 4996er meldung kommt auch bei einer vielzahl an alter c-funktionen die sich mit char-string bearbeitung beschäftigen. der compiler schlägt dann auch gleich vor die "safe" variante zu verwenden, nur das diese nicht im std vorkommt wird verschwiegen
-
Für die blinden, die Compiler-Meldungen anscheinend nicht lesen können:
1>c:\wxwidgets\include\wx\datetime.h(1095) : warning C4996: 'localtime': This function or variable may be unsafe. Consider using localtime_s instead. **To disable deprecation, use _CRT_SECURE_NO_WARNINGS.**See online help for details.
1> c:\programme\microsoft visual studio 9.0\vc\include\time.inl(114) : see declaration of 'localtime'
-
Ankou - schrieb:
Ich will ja nicht alle Warnungen ausschalten, nur diese, weil die eben nicht von mir ist.
und mit _CRT_SECURE_NO_WARNINGS als präprozesser variable schaltet er sie nunmal überall aus (es sei denn er macht vor dem entprechenden inlcudes eine #define _CRT_SECURE_NO_WARNINGS oder besser die Lösung von Jochen).
soviel zum Für die Blinden, die Antworten anscheinend nicht lesen können
-
muffmolch schrieb:
Ankou - schrieb:
Ich will ja nicht alle Warnungen ausschalten, nur diese, weil die eben nicht von mir ist.
und mit _CRT_SECURE_NO_WARNINGS als präprozesser variable schaltet er sie nunmal überall aus (es sei denn er macht vor dem entprechenden inlcudes eine #define _CRT_SECURE_NO_WARNINGS oder besser die Lösung von Jochen).
soviel zum Für die Blinden, die Antworten anscheinend nicht lesen können
Aha:
weil die eben nicht von mir ist
Dann soll der Fragesteller in Zukunft bessere Fragen stellen. Ich konnte daraus nicht interpretieren, das er DIESE EINE an der Stelle abschalten will. Für mich heißt "nicht von mir", die von anderen - Punkt!
Und selbst wenn, meine Antwort ist trotzdem richtig!
#define _CRT_SECURE_NO_WARNINGS #include <andere.h> #undef _CRT_SECURE_NO_WARNINGS
Ätsch! :p
Es ist mir doch völlig egal wo er das abschalten will: das Makro ist dafür da!
-
Artchi schrieb:
#define _CRT_SECURE_NO_WARNINGS #include <andere.h> #undef _CRT_SECURE_NO_WARNINGS //<- GEFAEHRLCIH
naja, da ist man eben wieder in diesem gerangel mit den leidigen präprozessor definitionen. denn so ist es äußerst gefährlich, denn Annahme: _CRT_SECURE_NO_WARNINGS ist und soll in einem anderen Projekt, dass dieses einbindet stets gesetzt sein, dann deaktivierst du es nämlich, was zu einem unvorhergesehnen Verhalten führen kann.. dahe rist un dbleibt Jochens Lösung das nonplusultra!
-
Nein, das Makro ist nur innerhalb einer Übersetzungseinheit plus den "bösen" Headern gültig. Und nicht für das gesamte und schon garnicht für andere Projekte.
-
<<< schäm >>> mein fehler... dennoch gefährlich, wenn man andere dateien in der gleichen datei einbindet (nach #undef) und diese aber explizit das define wollen ohne es zu setzen. aber da dreh eich mich nun im kreis und die frage ist schon lange beantwortet
edit: das mit den projekten habe ich etwas missveständlich ausgedrückt. ich meine damit ehe, dass man header-dateien anderer projekte nach der unseglichen #ifdef anweisung... sollte ein aktives define in dieser header erwünscht sein, so hat man es zumindest für das kompilieren im moment deaktivert... klar kann es sein, dass man sie nochmal igrnedwo einbindet und dort keine deaktivierung vorgenommen hat... und das meinte ich mitinkonsistenz