LINUX.ORG.RU
Ответ на: комментарий от lester

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

mskmsk1985
() автор топика
Ответ на: комментарий от mskmsk1985

дык имея строку на руках - парси и форматируй как хочешь

lester ★★★★
()
Ответ на: комментарий от mskmsk1985

Просто текущую область видимости?

А как по твоему должно выглядеть имя такой области:

{
  ...
  {
  ...
    {
    ... // << тут
    }
  }
}

Или может всё, что ты хочешь, это __FILE__ и __LINE__ ?

Begemoth ★★★★★
()

Вот как это достаточно кроссплатформенно сделано в Qt:

#if (defined(Q_CC_GNU) && !defined(Q_OS_SOLARIS)) || defined(Q_CC_HPACC) || defined(Q_CC_DIAB)
#  define Q_FUNC_INFO __PRETTY_FUNCTION__
#elif defined(_MSC_VER)
    /* MSVC 2002 doesn't have __FUNCSIG__ nor can it handle QT_STRINGIFY. */
#  if _MSC_VER <= 1300
#      define Q_FUNC_INFO __FILE__ "(line number unavailable)"
#  else
#      define Q_FUNC_INFO __FUNCSIG__
#  endif
#else
#   if defined(Q_OS_SOLARIS) || defined(Q_CC_XLC) || defined(Q_OS_SYMBIAN)
#      define Q_FUNC_INFO __FILE__ "(line number unavailable)"
#   else
        /* These two macros makes it possible to turn the builtin line expander into a
         * string literal. */
#       define QT_STRINGIFY2(x) #x
#       define QT_STRINGIFY(x) QT_STRINGIFY2(x)
#       define Q_FUNC_INFO __FILE__ ":" QT_STRINGIFY(__LINE__)
#   endif
    /* The MIPSpro and RVCT compilers postpones macro expansion,
       and therefore macros must be in scope when being used. */
#   if !defined(Q_CC_MIPS) && !defined(Q_CC_RVCT) && !defined(Q_CC_NOKIAX86)
#       undef QT_STRINGIFY2
#       undef QT_STRINGIFY
#   endif
#endif
Dendy ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.