Существует ли GCC __PRETTY_FUNCTION__ для буквальных аргументов, которые он выдал?

Если моя функция:

void foo(bool bar)
{
qDebug() << __PRETTY_FUNCTION__;
}

foo(getBool()); будет выводить "void foo(bool bar)"

Я хотел бы получить более точный результат, чтобы:

foo(getBool()); будет выводить "getBool()"

Каков наилучший способ сделать это?

Требование заключается в том, что foo(boolbar) будет помещен в динамическую библиотеку, как таковую:

#include "Custom Library/output_tools.h"

в проекты.

0

Решение

Почему бы просто не использовать макрос для этого?

#define printBoolFunctionAndResult(bar) qDebug() << #bar << " " << bar;

При этом используется оператор stringize для преобразования аргументов макроса в строку, и сначала печатается аргумент напрямую, а затем оценивается его.

Вот рабочий пример с std::cout: https://repl.it/repls/IntelligentGrayGermanpinscher

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]