Unterstützt der "C" -Standard etwas Ähnliches wie __func__
für die Namen der Funktionsargumente?Hat C __func__ Funktionalität für Namen der Argumente einer Funktion?
Antwort
, wenn Sie eine schnelle und schmutzige Lösung für dieses Make-Präprozessor-Makros wie diese wollen ...
#define FUNCTION_HEADER(a) a { const char* __func__ = #a;
#define FUNCTION_FOOTER() }
... und es für Ihre Funktion Kopf- und Fußzeilen wie diese mit VS 2008 verwenden (getestet):
#include <windows.h>
#define FUNCTION_HEADER(a) a { const char* __func__ = #a;
#define FUNCTION_FOOTER() }
FUNCTION_HEADER(int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd))
MessageBoxA(0, __func__, __func__, MB_OK);
return 0;
FUNCTION_FOOTER()
Dies sollte genau funktionieren, wie Sie wollen, aber es ist hässlich.
Hässlich, aber macht den Job :-) –
Nein, der C99-Standard hat die folgenden:
6.10.8 Vordefinierte Makronamen
Die folgenden Makronamen wird durch die Implementierung definiert werden:
__DATE__
__FILE__
__LINE__
__STDC__
__STDC_HOSTED__
__STDC_MB_MIGHT_NEQ_WC__
__STDC_VERSION__
__TIME__
Die folgenden Makronamen sind durch die Implementierung bedingt definiert:
__STDC_IEC_559__
__STDC_IEC_559_COMPLEX__
__STDC_ISO_10646__
6.4.2.2 Vordefinierte Bezeichner
Die Kennung
__func__
wird implizit durch den Übersetzer erklärt werden, als ob sofort die öffnende Klammer jeder Funktionsdefinition folgende, die Deklaration
static const char __func__[] = "function-name";
erschien, wo Funktion-Name ist der Name der lexikalisch-enc Funktion zu verlieren.63)
gcc fügt einige extensions hinzu, wie ich mir andere Compiler vorstellen.
- 1. R Argumente einer Funktion erhalten
- 2. Funktionalität der scanf Funktion in c
- 3. In Lua, wie können Sie den Namen der aktuellen Funktion, wie der C99 __func__ Bezeichner drucken?
- 4. Mit dem gleichen Argumente Namen für eine Funktion in einer anderen Funktion definiert
- 5. „zu viele Argumente für Funktion“ in C
- 6. __func__ C++ Die lokale vordefinierte Variable der Funktion 11 wird nicht kompiliert
- 7. C++ Funktion bind Argumente curried Funktion
- 8. Equivalent von __FUNC__ oder __FUNCTION__ in Rust?
- 9. Pass Argumente Funktion
- 10. Argumente einer Funktion in Matlab
- 11. eine Liste einer Funktion Argumente
- 12. Prozedur oder Funktion Insert hat zu viele Argumente angegeben
- 13. Vorgehensweise oder Funktion !!! hat zu viele Argumente angegeben
- 14. Wie kann eine Funktion ihren Namen und Argumente in R
- 15. Wie viele Argumente hat main() in C/C++
- 16. Namen der C-Sprachfamilie
- 17. gnuplot Anzahl der Argumente in der Funktion
- 18. eine Python-Funktion zur Laufzeit mit dem angegebenen Argumente Namen
- 19. Anzahl der Argumente in Funktion
- 20. Können Sie __func__ in eine wchar_t [] zur Kompilierzeit konvertieren?
- 21. Die beste überladene Methodenübereinstimmung für System.Threading.Timer.Timer() hat einige ungültige Argumente
- 22. C++ Klasse hat kein Mitglied mit dem Namen
- 23. Schreiben einer MySQL UDF C++ STL-Funktionalität
- 24. Über die Argumente der binären Funktion in C++
- 25. wie dynamisch überprüfen Anzahl der Argumente einer Funktion in PHP
- 26. Aufrufen einer Objective-C-Methode mit Namen
- 27. Zugriff auf Argumente für Bash-Skript innerhalb einer Funktion
- 28. VB.NET Prozedur oder Funktion hat zu viele Argumente angegeben
- 29. Object Funktionalität aus C++ Code in C#
- 30. Prozedur oder Funktion hat zu viele Argumente angegeben
Sie müssen ein bisschen auf diese ... – Stephan202
Ich denke, er bedeutet zu fragen, ob C hat ein Makro, das erweitert, um die Parameter der Funktion ist in, und die Antwort ist nein. – Blindy