Я хочу знать, как узнать, может ли макрос препроцессора __PRETTY_FUNCTION__
использоваться с данным компилятором (поскольку он должен быть нестандартным). Как я могу проверить это в заголовочном файле? Что я хочу сделать, это что-то вроде:
#ifndef __PRETTY_FUNCTION__
#define __PRETTY_FUNCTION__ __func__
#endif
Но я предполагаю, что случится, если препроцессор определит макрос на месте для каждой функции, поэтому мне интересно, есть ли смысл в __PRETTY_FUNCTION__
(в отличие от __FILE__
или __LINE__
) вне функции. Это правда или я могу просто использовать код выше? Если нет, как я могу проверить это?
РЕДАКТИРОВАТЬ: Я попробовал это. __PRETTY_FUNCTION__
не определено вне функции (я не проверял внутри класса). Так что должен быть другой путь.
РЕДАКТИРОВАТЬ2: На самом деле простой взлом был бы сделать это :):
void Dummy()
{
#ifndef __PRETTY_FUNCTION__
#define __PRETTY_FUNCTION__ __func__
#endif
}
Другой метод заключается в проверке компилятора, как было предложено другими.