Benutzerdefinierte Kompilerwarnung ausgeben



  • Hi Leute,
    Ich würde gern eine benutzerdefinierte Kompilerwarnung ausgeben. Soll so ne Art Erinnerung sein, dass ich an der Stelle noch etwas ändern muss.
    Hab es mit #pragma message("Überprüfen!") versucht, aber damit kann ich leider weder die Zeilennummer angeben, noch kann man auf den Text doppelklicken um zu dieser Zeile zu springen, wie bei normalen Warnings 😞
    Jemand ne Ahnung, wie ich das machen könnte? Oder nen anderen Vorshclag, wie man solche Erinnerungen am besten realisiert? Kommentare im Code mach halt nciht so stark auf sich aufmerksam wie warnings 🙂



  • Mit den Definierungen __FILE__ und __LINE__ kannst du dir wenigstens die Zeilennummer anzeigen lassen, falls dir das hilft.

    [ Dieser Beitrag wurde am 08.06.2003 um 09:35 Uhr von Phobos editiert. ]



  • __FILE__ funktioniert, __LINE__ aber nicht, da __LINE_ ein integer is 😞



  • sowas wie #error wär gut, nur sollte es mir eben nur ne warning ausgeben und keinen fatal error ...



  • wäre hier was zu finden?
    habe ich aus meiner deutschen msdn rauskopiert, ohne ausprobiert zu haben:

    warning
    #pragma warning( Warnungsbezeichner: Warnungsnummernliste[,Warnungsbezeichner: Warnungsnummernliste...] )

    #pragma warning( push[ , n ] )

    #pragma warning( pop )

    Erlaubt die selektive Änderung des Verhaltens von Compiler-Warnungsmeldungen.

    Der Warnungsbezeichner kann einer der folgenden sein.

    Warnungsbezeichner Bedeutung
    Once Die angegebene(n) Meldung(en) nur einmal anzeigen.
    default Das standardmäßige Compilerverhalten auf die angegebene(n) Meldung(en) anwenden.
    1, 2, 3, 4 Die gegebene Warnungsstufe auf die angegebene(n) Meldung(en) anwenden.
    disable Die angegebene(n) Warnungsmeldung(en) nicht ausgeben.
    error Die angegebenen Warnungen als Fehler melden.

    Die Warnungsnummernliste kann beliebige Warnungsnummern enthalten. Mehrere Optionen können in derselben Pragma-Direktive wie folgt angegeben werden:

    #pragma warning( disable : 4507 34; once : 4385; error : 164 )

    Diese Funktionalität entspricht:

    #pragma warning( disable : 4507 34 ) // Warnungsmeldungen
    // 4507 und 34 deaktivieren
    #pragma warning( once : 4385 ) // Warnung 4385 nur
    // einmal ausgeben
    #pragma warning( error : 164 ) // Warnung 164
    // als Fehler melden.

    Bei Warnungsnummern größer als 4699, das sind solche, die mit Codegenerierung verknüpft sind, hat das warning-Pragma nur eine Wirkung, wenn es außerhalb von Funktionsdefinitionen untergebracht wird. Das Pragma wird ignoriert, wenn es eine Zahl größer als 4699 angibt und innerhalb einer Funktion verwendet wird. Das folgende Beispiel illustriert die richtige Plazierung von warning-Pragmas zum Deaktivieren und anschließendem Wiederherstellen einer Warnungsmeldung zur Codegenerierung:

    int a;
    #pragma warning( disable : 4705 )
    void func()
    {
    a;
    }
    #pragma warning( default : 4705 )

    Das warning-Pragma unterstützt auch die folgende Syntax:

    #pragma warning( push [ ,n ] )

    #pragma warning( pop )

    Wobei n eine Warnungsstufe (1 bis 4) darstellt.

    Das Pragma warning( push ) speichert den aktuellen Warnungszustand für alle Warnungen. Das Pragma warning( push, n) speichert den aktuellen Warnungszustand für alle Warnungen und setzt die globale Warnungsstufe auf n.

    Das Pragma warning( pop ) entnimmt den zuletzt auf den Stack geschobenen Warnungszustand. Alle Änderungen, die am Warnungszustand zwischen push und pop vorgenommen worden sind, werden rückgängig gemacht. Betrachten Sie dieses Beispiel:

    #pragma warning( push )
    #pragma warning( disable : 4705 )
    #pragma warning( disable : 4706 )
    #pragma warning( disable : 4707 )
    // Beliebiger Code
    #pragma warning( pop )

    Am Ende dieses Codes stellt pop den Zustand aller Warnungen (einschließlich 4705, 4706 und 4707) wieder so her, wie er am Anfang des Codes war.

    Beim Schreiben von Headerdateien kann mit push und pop sichergestellt werden, daß die vom Benutzer vorgenommenen Änderungen an den Warnungszuständen die richtige Kompilierung der Header nicht verhindern. Verwenden Sie push am Anfang des Headers und pop am Ende. Angenommen, Sie haben zum Beispiel einen Header, der auf Warnungsstufe 4 nicht sauber kompiliert wird. Mit dem folgenden Code wird die Warnungsstufe auf 3 geändert, und am Ende des Headers wieder auf die ursprüngliche Warnungsstufe zurückgesetzt:

    #pragma warning( push, 3 )
    // Deklarationen / Definitionen
    #pragma warning( pop )

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/HTML/_predir_warning.asp

    [ Dieser Beitrag wurde am 08.06.2003 um 11:01 Uhr von elise editiert. ]



  • ne leider net, damit kann man nur das verhalten des compilers bei bestimmten warnings steuern: warnung ausblenden, nur einmal anzeigen, als fehler melden usw 😞





  • Thx 🙂


Anmelden zum Antworten