Behandeln von __func__ als Zeichenfolgenliteral anstelle eines vordefinierten Bezeichners

Ich benutze gcc, um C99-Code zu kompilieren. Ich möchte ein Makro schreiben, das eine Zeichenfolge zurückgibt, die den Funktionsnamen und die Zeilennummer enthält.

Das habe ich:

#define INFO_MSG  __FILE__ ":"__func__"()"

Wenn ich jedoch Code kompiliere, der versucht, diese Zeichenfolge zu verwenden, zum Beispiel:

char buff[256] = {'\0'}
sprintf(buff, "Something bad happened here: %s, at line: %d", INFO_MSG, __LINE__);
printf("INFO: %s\n", buff);

Ich erhalte folgende Fehlermeldung:

error: expected ‘)’ before ‘__func__’

Ich habe das Problem bis zum Makro aufgespürt. als wenn ich entferne__func__ Aus dem Makro wird der Code korrekt kompiliert.

Wie behebe ich das Makro, damit ich das Vordefinierte einbinden kann?__func__ Makro in meinem String?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage