Ternick
@Ternick

Возможно ли обрабатывать строки в момент компиляции?

У меня есть программа, которая в своём коде хранит много длинных путей до своих элементов. Я хотел бы сделать что-то на подобии макроса или что-то похожее. Чтобы происходило примерно следующее.
wstring data = WMACROS(L"%pathToLogs%\\Errors.log");

и после компиляции в .приложении можно будет найти следующее:
wstring data = L"ProgramData\\AllLogs\\WebData\\{СЛУЧАЙНАЯ СТРОКА, КОТОРАЯ ГЕНЕРИРУЕТСЯ ПРИ КОМПИЛЯЦИИ}\\Logs\\Errors.log";

Можно конечно сделать функцию, которая будет этим всем заведовать или добавить в реестре в HKCU\Enviroment ключи с путями, но не хочется засорять пользовательское окружение и я думаю есть другое решение этой задачи, не ?

Ну так вот, как сделать подобие макроса которое будет отдавать строку в которой есть случайная строка, которая генерируется при компиляции.
  • Вопрос задан
  • 130 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
СЛУЧАЙНАЯ СТРОКА, КОТОРАЯ ГЕНЕРИРУЕТСЯ ПРИ КОМПИЛЯЦИИ

Сомнительно выглядит новая случайная строка которая генерируется при каждой компиляции. Но даже если так, то простым и достаточно универсальным решением будет генерировать исходник с этой строкой, например скриптом или вызовом внешней программы. Эту генерацию можно вызывать по нужному событию (например, каждую компиляцию), или вручную. И дальше использовать этот исходник как любой другой.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Можно сделать так:
#define TO_LOGS(str) "ProgramData\\AllLogs\\WebData\\14.08.2020\\Logs\\" str

cout << TO_LOGS("Errors.log") << endl; 
//=> ProgramData\AllLogs\WebData\14.08.2020\Logs\Errors.log
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы