Namen der aktuellen Funktion erfahren
-
Hallo,
ist es möglich, an einer bestimmten Stelle des Codes zu erfahren, in welcher Funktion man sich dort befindet? Hintergrund ist, dass ich in komplizierteren Funktionen normalerweise ein Flag OUTPUT_DEBUG definiere, mit dem ich Kontrollausgaben an und ausschalten kann. Wenn dieses Flag gesetzt ist, gebe ich zuerst einmal einen Header aus, der im wesentlichen den Namen der aktuellen Funktion enthält. Das sieht dann so aus:
void classification::calc_bps() { const bool OUTPUT_DEBUG = 1; ofstream* out_strm = output_streams::out_strm(); if (OUTPUT_DEBUG) output_streams::header_begin(out_strm, "calc_bps"); ... }Ich hätte nun gerne statt
output_streams::header_begin(out_strm, "calc_bps");so was wie
output_streams::header_begin(out_strm, current_function_name());Geht das irgendwie?
-
Nach dem C++-Standard geht das nicht, aber der MSVC++-Compiler hat ein Makro __FUNCTION__ dafür. Kennt (leider) halt nicht jeder Compiler (evtl sogar nur der MS-Compiler).
-
Danke, der GCC scheint das auch zu unterstützen.
Des Weiteren: Gibt es auch eine Möglichkeit die Klasse zu erfahren, zu der die aktuelle Funktion gehört?
-
__FILE__ und __LINE__ sind eventuell noch nützlich und ANSI-kompatibel.
-
Also für mich enthält
__FUNCTION__auch die Klasse einer Methode...greetz, Swordfish
-
-
Ich habe noch mal nachgeguckt und bei mir gibt __FUNCTION__ definitiv nur den Funktionsnamen und nicht auch den Klassennamen aus (ich benutze GCC).
Aber aus __FILE__ ergibt sich ja in aller Regel die Klasse.