Новая строка в макросе, или как выкинуть в #pragam message
От: Malokhatko  
Дата: 03.06.08 09:43
Оценка:
День добрый,

Понадобилось перечислить все _T("x"), их содержимое в проэкте (т.е. x), название функции где используется, файл и строка.
#pragma message и __FUNCTION__ вроде удовлетворяют потребностям.

Меняем макрос _T.

#undef _T

#define sharpsign #
#define JOIN(x, y)            DO_JOIN(x, y)
#define DO_JOIN(x, y)        x##y

#define _T(x) __T(x) \
    JOIN(sharpsign, pragma) message("HelloWorldMessage--"__FUNCTION__"--") // тут еще x надол вывести, но это....


Но #pragma работает только с новой строки, а макрос раскрывается в одну строку.

ВОПРОС: А как сделать перевод каретки в макросе?
Я так понял что это невозможно.

Пробовал через template
что то типа

template <typename FN> class mcc
{
public:
    static int ll()
    {
#pragma message("HelloWorldFromClass--"__FUNCTION__)
        return NULL;
    }
};
...
// где то в коде
void MyClass::func()
{
    mcc<int>::ll();
}


Только вот беда, __FUNCTION__ выдает mcc<int>::ll, а не MyClass::func::mcc<int>::ll.

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

Сенкс
тут
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.