Нет смысла использовать __FUNCTION__
.
__func__
является стандартным (C99, C11 , C17).C11 6.4.2.2p1:
Идентификатор __func__
должен быть неявно объявлен транслятором, как если бы сразу после открывающей скобки каждого определения функции было объявлено
static const char __func__[] = "function-name";
Из документации GCC :
__FUNCTION__
- другое имя для __func__
, предоставленное для обратной совместимостисо старыми версиями GCC.
И если вы хотите узнать, сколько лет, __func__
появился в GCC 2.95 , выпущен 31 июля 1999 .Имейте в виду, вам не нужно __FUNCTION__
для чего-либо еще , но для поддержки GCC 2.94 или более ранней версии .Если вы это сделаете, то это предупреждение, вероятно, меньше всего вас беспокоит.
Однако __func__
также недоступен в режиме C89 / 90, поэтому вы получите предупреждение там.Если вам небезразлична диагностика ISO, вам нужно использовать более новую версию.Современные GCC по умолчанию уже используют GNU C11 или C17.
См. Также: В чем разница между __PRETTY_FUNCTION__
, __FUNCTION__
, __func__