__LINE__ und __FILE__ ohne Makros effektiv nutzen



  • Ich bin derzeit dabei, eine Fehlerbehandlungsklasse zu schreiben (Logging, Ausgabe in der Konsole/aufm Bildschirm... das übliche halt)

    Ich würde dabei gerne den genauen Ort, wo der Fehler aufgetreten ist, mitprotokollieren. Allerdings müsste ich dann jedesmal __LINE__ und __FILE__ übergeben

    //also statt
    log( "Fehler" );
    
    // müsste ich stets
    log( "Fehler", __LINE__, __FILE__ );
    
    // schreiben
    

    auf die Dauer ein wenig nervig...

    ich könnte es freilich über ein Makro lösen, aber ich hab es bis jetzt erfolgreich geschafft, sowas in meiner Anwendung zu vermeiden und würde das gerne beibehalten

    gibts da ne andere Möglichkeit?



  • zwutz schrieb:

    gibts da ne andere Möglichkeit?

    Nein.



  • zwutz schrieb:

    ich könnte es freilich über ein Makro lösen, aber ich hab es bis jetzt erfolgreich geschafft, sowas in meiner Anwendung zu vermeiden und würde das gerne beibehalten

    Es gibt Fälle wo Makros durchaus ihre Darseinsberechtigung haben, wie dieser! 🙂



  • David_pb schrieb:

    zwutz schrieb:

    ich könnte es freilich über ein Makro lösen, aber ich hab es bis jetzt erfolgreich geschafft, sowas in meiner Anwendung zu vermeiden und würde das gerne beibehalten

    Es gibt Fälle wo Makros durchaus ihre Darseinsberechtigung haben, wie dieser! 🙂

    ok, danke...

    ich werds überleben 🤡



  • Damit du nicht viel Code ändern musst, kannst du ja den Bezeichner log für das Makro verwenden.

    void log_function(const char* Message, int Line, const char* File);
    
    #define log(MESSAGE) log_function(MESSAGE, __LINE__, __FILE__)
    

Anmelden zum Antworten