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