Unsere Logging-Framework, wie die meisten Logging Frameworks, verwendet das __FUNCTION__
Makro-Präprozessor die aktuelle Funktion in Log-Dateien einzufügen, so dass unsere Protokollierung wie folgt aussieht:Gibt es eine schöne Möglichkeit, Funktionsnamen innerhalb eines Lambda zu protokollieren?
L4 T11332 609661594 [PreProcessorFunctions::RegenerateLinkIDs] [ENTER]
L4 T11332 609661594 [PreProcessorFunctions::RegenerateLinkIDs] [EXIT]
L4 T11332 609661594 [ConfigMerger::ValidateConfigObject] [ENTER]
L3 T11332 609661594 [ConfigMerger::ValidateConfigObject] Configuration Exists: 1
Wie wir ++ C 11 mehr verwenden, haben begonnen ich habe bemerkt, dass labmdas genau noch nicht hilfreich __FUNCTION__
Ausgabe erzeugen:
L4 T9604 609661594 [`anonymous-namespace'::<lambda1>::operator()] Writing EMX config file: C:\windows\TEMP\CBE01448-32A2-493A-A9A1-2112F5709028\CA37BE5C-B398-4D61-980D-66B8E1E6D001\\EMXConfiguration.xml
L4 T11332 609661594 [`anonymous-namespace'::<lambda3>::operator()] Writing Auditing config file: C:\windows\TEMP\CBE01448-32A2-493A-A9A1-2112F5709028\CA37BE5C-B398-4D61-980D-66B8E1E6D001\\Auditing.xml
L4 T11960 609661594 [`anonymous-namespace'::<lambda2>::operator()] Writing UEM config file: C:\windows\TEMP\CBE01448-32A2-493A-A9A1-2112F5709028\CA37BE5C-B398-4D61-980D-66B8E1E6D001\\Configuration.xml
Wie Sie bereits verloren sehen, hat alle Klassenbereich und alles, was wir jetzt wissen, dass diese Logging-Anweisung von einem anonymen Lambda kam. Hat jemand eine gute Strategie zum Abmelden der umschließenden Funktion? Dies scheint die nützlichste Sache zu sein, um zu loggen ...
http://stackoverflow.com/questions/4434282/visual-c-äquivalent-von-file-line-and-pretty-function Was gibt '__FUNCSIG__' für lambdas? – BoBTFish
Haha, VS2012 zeigt: 'wmain :: :: operator()' –
Benj
Zumindest zeigt es die umschließende Funktion ... – Benj