Я использую gcc для компиляции кода C99. Я хочу написать макрос, который вернет строку, содержащую имя функции и номер строки.
Это то, что у меня есть:
#define INFO_MSG __FILE__ ":"__func__"()"
Однако, когда я компилирую код, который пытается использовать эту строку, например:
char buff[256] = {'\0'}
sprintf(buff, "Something bad happened here: %s, at line: %d", INFO_MSG, __LINE__);
printf("INFO: %s\n", buff);
Появляется следующее сообщение об ошибке:
error: expected ‘)’ before ‘__func__’
Я отследил проблему до макроса. как при удалении __func__
из макроса, код компилируется правильно.
Как исправить макрос, чтобы я мог включить в мою строку предопределенный макрос __func__
?