Как сделать макрос в хедере с разным поведением в сорсах?

Хочу сделать макрос для логирования такой, чтобы в одних файлах он автоматически писал одно имя бинаря, в других - другое. То есть у меня есть проект

utils
- logger
  - logger.h
app_1
- ...
- main.cpp
- app_1_file.cpp
app_2
- ...
- main.cpp
- app_2_file.cpp

Я хочу чтобы в файлах app_1 мой вызов макроса LOG("hello") выдавал надпись from app_1: hello, а в файлах app_2 - from app_2: hello. Для этого в макросе делаю что-то вроде (псевдокод):

#define LOG(text) if (__FILE__.contains("app_1")) std::print("from app_1: {}", text); else std::print("from app_2: {}", text)

Но в соседнем вопросе говорят, что вывод __FILE__ не гарантирован. Норм ли такое решение или можно лучше сделать?

Проблема в том, что использовать не макрос я не могу, т.к. на самом деле у меня не std::print, а другой макрос из сторонней библиотеки для логирования, который требует раскрытия на месте вызова (чтобы правильно подхватить строчки и т.п.)


Ответы (0 шт):