Получение имени текущего метода в С++
Есть ли (стандартизованный) способ получить имя текущего метода с помощью С++?
Используя GNU GCC, вы можете сделать это, используя макрос __FUNCTION__
и __PRETTY_FUNCTION__
(в окружении 2 символа подчеркивания), однако это, конечно, не переносимо. Есть ли способ сделать это в стандартном С++ или способе сделать его переносимым?
Ответы
Ответ 1
Идентификатор __func__
является частью стандарта C99 и находится в проекте С++ 0x.
Идентификатор __func__
неявно объявляется компилятором, как если бы в самом начале каждого тела функции были следующие:
static const char __func__[] = "function-name";
где function-name
- строка, определенная реализацией, автоматически предоставляемая компилятором.
До тех пор, пока поддержка этих стандартов не будет доступна (или более широко доступна), вы застряли в компиляторе-специфическом gunk.
Ответ 2
Нет... но некоторые вещи в конечном итоге являются нестандартными стандартами!
см. http://msdn.microsoft.com/en-us/library/b0084kay(VS.80).aspx, в котором описываются стандартные элементы ANSI, а затем микросостояния, которые включают FUNCTION
Ответ 3
Нет, он не поддерживается стандартом С++.
Ответ 4
Он называется "интроспекцией", и в стандартах С++ такого не существует. Вы должны использовать внешнюю библиотеку (я думаю, что она поддерживает ее как-то).
Но попробуйте выяснить, является ли причина его использования действительно хорошей.