Weiterleitung von Fehlermeldungen



  • Bitte kommentierten Code ansehen.

    // C-Bibliothek, z.B. test.lib
    int func1()
    {
        if( FEHLER  ) // FEHLER ist hier nur Pseudocode !
        {
         fprintf(stderr, "func1 failed.");
        return 1;
        }    
    }
    int func2()
    {
    }
    // Ende test.lib
    
    // Eine Funktion aus der test.lib soll in der WndProc aufgerufen werden. Im Fehlerfall soll eine Meldung in der Message Box ausgegeben werden.
    // WndProc
    if ( func1 ) MessageBox(hWnd, "func1 failed.", NULL, MB_OK );
    

    so ?
    irgendwie geht das doch besser oder ?



  • konzeptsuchender schrieb:

    so ?
    irgendwie geht das doch besser oder ?

    Klar, lass einfach den ganzen Code weg 😮

    Nun im Ernst: Was erwartest Du denn mit diesen spärlichen Infos von uns? 😕
    Wir wissen nicht einmal was genau Deine Wunschvorstellung ist!
    Brauchst Du gleichzeitige Ausgabe sowohl über stderr als auch über Messagebox?

    Ich bitte Dich daher um ein wenig mehr Eigeninitiative und mach Dir mal selbst ein wenig mehr Gedanken darüber.

    Martin



  • Ich schreibe mir einige Bibliotheksfunktionen in C.
    Möglicherweise möchte ich diese anderen zur Verfügung stellen. Da ich aber nicht weiß, in welches System sie eingebunden werden, dachte ich mir das ich das möglichst portabel gestalte und die Meldungen über stdout, stderr ausgebe.

    Parallel dazu benutze ich diese Funktionen in der Windowsumgebung zusammen mit der WinAPI.
    Vielleicht kann man ja stderr auf eine Messagebox umleiten ?



  • Du willst also einen portablen Code schreiben der sowohl unter Windows als auch in anderen Umgebungen (ich tippe da mal auf Linux oder Mac OS X 😃 ) lauffähig sein soll?
    Oha, da hast Du aber mächtig viel was vor! 😮

    Alleine die vagen Formulierungen "Möglicherweise" oder "Da ich aber nicht weiß" zeugt von Unkenntnis über Deine (möglicherweise viel zu hoch gesteckten) Ziele. (nicht böse gemeint)
    Ich persönlich kann Dir nur einen Rat geben: Mach erstmal nur das was Du für Deine Bedürfnisse brauchst.

    Ansonsten guck Dir die alternativen Bibliotheken wie z.B. wxWidgets an.

    Martin


  • Mod

    konzeptsuchender schrieb:

    Ich schreibe mir einige Bibliotheksfunktionen in C.
    Möglicherweise möchte ich diese anderen zur Verfügung stellen. Da ich aber nicht weiß, in welches System sie eingebunden werden, dachte ich mir das ich das möglichst portabel gestalte und die Meldungen über stdout, stderr ausgebe.

    Die Verwednung von stderr ist mit Sicherhit nicht protabel.
    Wenn Du C++ in Deine Erwägungen einbeziehst so würde ich Dir zu Exceptions raten.

    Ansonsten. Mach es wir das Win-OS oder die CRT. Returniere immer einen bestimmten Wert, der Success signalisiert entweder 0 oder !=0 zusätzliche führe eine Funktion GetMySpecficLastError() ein, die erweitere Fehler Infos gibt. Oder ganz luxoriös GetMySpecficLastErrorDesc(...).



  • Martin Richter schrieb:

    Die Verwednung von stderr ist mit Sicherhit nicht ...

    Darf man erfahren wieso ? Wird das nicht von allen gängigen Compilern/Systemen unterstützt ?

    Ansonsten, die Idee mit der GetLastError Geschichte hört sich gar nicht übel an.
    Also einfach nen Puffer, global sichtbar für die Lib, der mit eventuellen Fehlermeldungen der Bibliotheksfunktionen gefüllt wird.
    Finde ich auch besser, als ständig nen Nachrichtenparameter durch die ganzen Funktionen durchzuschleifen.


  • Mod

    Wenn ich eine Library bekomme, dann möchteich, dass deren Ausgaben dahin gehen wo ich sie hin haben will. Verwende ich die Library in einem Service nutzt stderr wenig bis nichts...


Log in to reply