Как сделать макрос в хедере с разным поведением в сорсах?
Хочу сделать макрос для логирования такой, чтобы в одних файлах он автоматически писал одно имя бинаря, в других - другое. То есть у меня есть проект
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, а другой макрос из сторонней библиотеки для логирования, который требует раскрытия на месте вызова (чтобы правильно подхватить строчки и т.п.)