Представьте, что у вас есть следующий код, где logDebug()
стоит дорого или не подходит для вызова более одного раза:
QDebug d = logDebug();
d << __FUNCTION__ << ":";
d << "positions separated with \" --- \":";
for (const auto& str : positions)
{
d << "---" << str;
}
Макрос (просто для правильного замены имени функции) уже существует, который заменяетпервые 2 строки:
#define LOG_FUNCTION this->logDebug() << __FUNCTION__ << ":"
Создает локальную переменную, вызывая logDebug()
.После вызова вы можете использовать только operator<<
в макросе.Проблема в том, что вы не можете прикрепить тело цикла for к логгеру.
Q: Есть ли способ, которым я мог бы использовать макрос для вставки всех позиций (без повторного вызова logDebug
?можно использовать лямбды, но я не знаю, как это сделать. Пожалуйста, помогите, самый короткий ответ победит!