Um einen Hintergrund zu geben, möchte ich die Protokollnachrichten auf der Grundlage der Aufrufliste auf eine saubere Art und Weise drucken.Wie erhalte ich die Position der Funktion im Call-Stack?
Zum Beispiel.
Sollte geben die Ausgabe als
foo(){
printf("Foo was called");
bar();
}
bar(){
printf("bar was called");
jai();
}
jai(){
printf("Jai was called");
}
<<<OUTPUT>>>
Foo was called.
bar was called
jai was called.
Ich möchte nicht auf diese Funktion die Anzahl der Räume als Argument übergeben oder eine globale Zählung der gleichen halten.
Ich dachte, dass, wenn wir die Position der Funktion in dem Call-Stack erhalten können, dann können wir in der gleichen Anzahl von Leerzeichen vor dem Text füllen Sie das gewünschte Format der Ausgabe zu erhalten.
Ich sehe Backtrace Funktionsaufruf sieht vor, dass mit den ganzen Stapel Namen als auch zurückgegeben. Es gibt auch die Gesamtzahl der Funktionen in dem Aufruf zurück.
Gibt es Funktionen, die nur die Position zurückgeben?
„_if können wir die Position der Funktion in dem Aufruf stack_ bekommen“: Das ist entweder eine Menge von Anweisungen auszuführen, oder einen Parameter oder eine globale Variable. –