Więc mam ten fragment koduCzy potrafisz przekonwertować __func__ na wchar_t [] podczas kompilacji?
wchar_t funcName[] = __FUNCTIONW__;
ale problem jest z __FUNCTIONW__
ma informacji klasy w imię kiedy wszystko czego chcę to nazwa funkcji. Teraz __FUNCTIONW__
po prostu wywołuje _CRT_WIDE(__FUNCTION__)
która uświadomiła mi, że mogę zadzwonić _CRT_WIDE(__func__)
ale daje błąd „identyfikator L__func__ jest niezdefiniowana”
__func__
jest niejawnie zadeklarowana identyfikatorem, który rozszerza się do zmiennej tablicy znaków zawierający nazwę funkcji, gdy jest on używany wewnątrz funkcji. Został dodany do C w C99. Od C99 §6.4.2.2/1:
identyfikatora
__func__
jest niejawnie zadeklarowana przez tłumacza, jak gdyby zaraz po klamrach otwarcia każdej definicji funkcji, deklaracjastatic const char __func__[] = "function-name";
pojawił którym funkcje -name to nazwa funkcji zamykającej leksykalnie. Ta nazwa jest nieoznakowaną nazwą funkcji.
Rozumiem, że __func_ nie jest makrem i nie ma nic wspólnego z preprocesingiem?
Czy istnieje inny sposób mogę uzyskać wchar_t tablicy w czasie kompilacji?
Prawidłowo, '__func__' nie jest makrem, więc wciśnie przed nim' L', ponieważ makro '_CRT_WIDE' powoduje błąd. –
Z tego samego powodu nie można wykonywać konkatenacji ciągów à la '" Witam, mam na imię "__func__". "' ... – Aconcagua