Получить имя текущего метода в 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++.


Это называется "самоанализ", и в стандартах c++ такого нет. Вы должны использовать внешнюю библиотеку (boost, я думаю, поддерживает ее как-то). Но попробуйте выяснить, действительно ли причина его использования хорошая.