Есть необходимость в лог писать имя функции, которая упала...
Есть код, который во всяком случае компиляется...
итак:
#ifdef WIN32
#define MRSWIDEN2(x) L ## x
#else
#define MRSWIDEN2(x) L ## #x
#endif
#define MRSWIDEN(x) MRSWIDEN2(x)
#ifdef WIN32
#define __WMRSFUNC__ MRSWIDEN(__FUNCTION__)
#else //!WIN32
#define __WMRSFUNC__ MRSWIDEN(__PRETTY_FUNCTION__)
#endif // WIN32
#define ERR_LOG(log, res, msg_err) \
log.AddMessage(res, __WMRSFUNC__ L" : " msg_err);
...
if (mrsResult != MRS_OK)
{
ERR_LOG(m_AppLog, mrsResult, L"Can't read Product table");
}
Под виндой все работает нормально...
под линухом после препроцессора получается чтото типа:
m_AppLog.AddMessage(mrsResult, L"__PRETTY_FUNCTION__" L" : " L"Can't read Product table");
такой вариант мне, конечно не подходит
если объявить так (так же как в виндовой ветке):
#define MRSWIDEN2(x) L ## x
то имеем после препроцессора код
m_AppLog.AddMessage(mrsResult, L__PRETTY_FUNCTION__ L" : " L"Can't read Product table");
Само собой, что это тоже не канает, т.к. компилер не может найти L__PRETTY_FUNCTION__
Как мне подправить этот код?