Для Debug версии приложения я бы хотел получать сообщения о ходе выполнения работы, чтобы лучше отлаживать его в случае ошибок, а на релизе всё это вспомогательное удалить не переписывая весь код. Для этой цели я придумал следующие макросы (и пример кода использования):
#define DEBUG true
#if DEBUG
#define COMMA ,
#define LOCATION(name) const std::source_location& name = std::source_location::current()
#define PARAMETER(name) name
#else
#define COMMA
#define LOCATION(name)
#define PARAMETER(name)
#endif
void foo(int value COMMA LOCATION(loc)) {
static constexpr std::string_view message = DEBUG ? "value = {} In [{}, {}] file: {}" : "value = {}";
std::println(
message,
value COMMA
PARAMETER(loc.line()) COMMA
PARAMETER(loc.column()) COMMA
PARAMETER(loc.file_name())
);
}
Пример не совсем корретен, но думаю идею я передал. Хотел бы выслушать ваши предложения и замечания.