präprozessor: die Codezeile, in der eine funktion aufgerufen wurde



  • Hi!

    Der Präprozessor-Command __LINE__ gibt mir die Zeile aus, in der ich grade bin, zB für Fehlerausgaben.

    wenn ich eine funktion habe, e.g.

    int BeispielFunk(int param){ ... }.

    und ich möchte die stelle im code bekommen, in der die Funktion _aufgerufen_ wurde -> wie kriege ich das hin? Klar könnte ich um jeden aufruf eine Abfrage setzen, zB

    if( -1 == BeispielFunk( ... ) ) { cout << "error in line " << __LINE__;}.

    das würde ich aber am liebsten in der funktion machen und dann die Zeile auslesen, in der die Funktion aufgerufen wurde...

    hat jemand ne idee wie das geht?



  • ANGs_Pino schrieb:

    hat jemand ne idee wie das geht?

    Da musst du wohl __LINE__ bei jedem Funktionsaufruf mit übergeben.

    int BeispielFunk(int param, int zeile){ ... }
    
    BeispielFunk( ..., __LINE__ );
    


  • Um trotzdem übersichtlichen Code zu haben, definierst du dafür ein eigenes Makro.

    int FunktionImpl(double Param, unsigned int Zeile);
    #define Funktion(Param) FunktionImpl(Param, __LINE__)
    
    Funktion(3.1415);
    

Anmelden zum Antworten