2012-01-07 6 views
3

Я не знаю много о RTTI, но я считаю, что благодаря этому вы можете получить имя переменных во время выполнения. Возможно ли получить имя функции, в которой работает поток?Можно ли получить текущее имя функции (члена) в C++?

+1

Нет, RTTI не возвращает ** имя ** переменных, это позволяет вам определить их ** тип **. –

+1

Возможный дубликат [Как можно захватить трассировку стека в C?] (Http://stackoverflow.com/questions/105659/how-can-one-grab-a-stack-trace-in-c) –

+0

Хорошо, Я думал, что 'typeid (var) .name' делает это, но, по-видимому, он возвращает имя типа переменной. – qdii

ответ

11

C++ 11 стандартизован __func__ для текущей функции.

Различные составители поддерживают варианты __FUNCTION__, __PRETTY_FUNCTION__ и другие.

2

Если вы используете материалы, совместимые с GNU, вы можете попробовать backtrace.

+0

Да, но это больше связано с GNU libc (или Linux), чем с C++ или g ++. –

0

Нет, это не возможно. C++ не поддерживает отражение (не статическое и динамическое) (например, C#). Для подражания вам понадобится магия препроцессора.

Кроме того, во время выполнения необязательно есть понятие имени функции/метода (это доступно только как информация для отладки, если вы скомпилировали источники с соответствующими флагами).

Смежные вопросы