Какое время жизни производит строка __PRETTY_FUNCTION__
?
Я знаю, что __func__
генерирует эквивалент static const char __func__[] = "function-name";
, благодаря этому static
, если я хочу создать запись чего-то, что произошло где-то в функции для последующего обращения, я могу просто сохранить значение __func__
в поле const char*
в записи и получить его, когда захочу, спустя долгое время после того, как я покинул область действия функции.
Действует ли __PRETTY_FUNCTION__
так же, или строка, которую он генерирует, ведет себя как локальное временное значение? Скажем, будет ли это работать надежно или может выйти из строя, если fname указывает на место, где раньше было имя функции, и мне нужно сделать буфер и вместо этого сделать strncpy()
или что-то подобное?
#include <stdio.h>
const char* fname = NULL;
void foo()
{
fname = __PRETTY_FUNCTION__;
}
int main()
{
foo();
printf(fname);
return 0;
}