логи полное имя метода с классом. Но PRETTY_FUNCTION добавляет много ненужного(параметры, возвращаемый тип), а func не печатает имя класса, а только метод.
Я нашел такое решение:
inline std::string methodName(const std::string& prettyFunction)
{
size_t colons = prettyFunction.find("::");
size_t begin = prettyFunction.substr(0,colons).rfind(" ") + 1;
size_t end = prettyFunction.rfind("(") - begin;
return prettyFunction.substr(begin,end) + "()";
}
#define __METHOD_NAME__ methodName(__PRETTY_FUNCTION__)
Но не совсем понимаю - вызов этого макроса будет выполняться в рантайме или он все это в компил-тайме порешает?
У макросов нет вызовов
Данное решение 100% будет в рантайме
можно ли как-то в 03 плюсах это сделать в компил-тайме или это в принципе не возможно?
Сделать функцию constexpr, принимать и отдавать string_view
Сомневаюсь, но я не специалист по древностям
constexpr since C++11
А кто-то вообще использует печать класса/функции в логах? Может есть другие варианты?
Конечно используют
Попробуй значит буст
Да руками напиши имена, и всё.
так и сделаю, походу
Обсуждают сегодня