генерация имени метода в макросе - PullRequest
2 голосов
/ 17 июня 2010

Мне нужно автоматически добавлять имя метода к некоторым сообщениям журнала.Я использовал __FUNCTION__ для этого, но он генерирует полное имя метода (namespace :: class: method).Так что это тратит много места и делает журналы менее читаемыми.Есть ли способ добавить только имя метода в MACRO без каких-либо ненужных классификаторов?

Ответы [ 2 ]

1 голос
/ 17 июня 2010

Напишите функцию, которая принимает аргумент char * и возвращает указатель на имя функции в ней. Затем напишите

MyFunction(FUNCTION)

Вместо

FUNCTION

Это также имеет то преимущество, что вы можете динамически переключаться между короткими и длинными именами.

1 голос
/ 17 июня 2010

Если ваш регистрационный код выглядит так:

#define LOGCALL \
    clog << "Called " << __FUNCTION__ << endl;

тогда вы можете просто написать глобальную функцию, чтобы обрезать имя функции, как требуется, и сказать:

#define LOGCALL \
    clog << "Called " << MyTrim( __FUNCTION__ ) << endl;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...