So habe ich diesen Code-SnippetKönnen Sie __func__ in eine wchar_t [] zur Kompilierzeit konvertieren?
wchar_t funcName[] = __FUNCTIONW__;
aber das Problem mit __FUNCTIONW__
ist es Klasse Info im Namen hat, wenn alles, was ich will, ist der Name der Funktion. Jetzt __FUNCTIONW__
nennt nur _CRT_WIDE(__FUNCTION__)
die ich denke ich _CRT_WIDE(__func__)
nennen könnte, aber das gibt einen Fehler „Kennung L__func__ nicht definiert ist“
__func__
ist eine implizit deklarierte Kennung, die ein Zeichenarray Variable erweitert mit dem Funktionsnamen, wenn es im Innern verwendet wird, einer Funktion. Es wurde zu C in C99 hinzugefügt. Von C99 §6.4.2.2/1:
Die Kennung
__func__
wird implizit durch den Übersetzer erklärt, als ob unmittelbar nach der öffnenden Klammer jeder Funktionsdefinition, die Deklarationstatic const char __func__[] = "function-name";
erschien, wo Funktion -name ist der Name der lexikalisch umschließenden Funktion. Dieser Name ist der schmucklose Name der Funktion.
Ich nehme das zu __func_ ist kein Makro und es hat nichts mit Vorverarbeitung zu tun?
Gibt es eine andere Möglichkeit, ein Array wchar_t zur Kompilierzeit zu bekommen?
Richtig, '__func__' ist kein Makro, und ein" L "davor als' _CRT_WIDE'-Makro anzuhängen, verursacht einen Fehler. –
Aus dem gleichen Grund können Sie keine String-Verkettung à la '" Hallo, mein Name ist "__func__". "... – Aconcagua