Исходя из нашего разговора в комментариях, у вас есть несколько альтернатив, которые я перечислю ниже, от ИМХО, до наименее желательных.
Вы никогда не указывали, работали ли вы в Windows, GNU + Linux,или занимались кроссплатформенной разработкой, но я уверен, что вы можете адаптировать предложения к вашей платформе.
Множественные и пользовательские файлы конфигурации (рекомендуется)
Вы можете изменить свою программу для просмотраСтандартное расположение вашей платформы для данных программы и / или файлов конфигурации.Например, вы можете найти стандартный конфиг по адресу /etc/<your-program>/default.conf
в GNU + Linux или %APPDATA%\<your-program>\default.conf
в Windows.
Если разные пользователи должны использовать свои личные настройки, программу также можно сделатьпринять путь к файлу конфигурации в качестве аргумента.Например:
GNU + Linux:
$ ./your-program --config ${HOME}/.your-program/my.conf
Windows:
> your-program.exe --config %userprofile%\your-program\my.conf
Обратите внимание, что использование %userprofile%
может меняться в зависимости от версий Windows и / илииспользуемые оболочки (например, стандартный cmd.exe против powershell).
Компиляция в пути (не рекомендуется)
На основе ваших комментариев краткосрочный обходной путь может быть для компиляции абсолютного пути в нем для макроса __FILE__
, чтобы вернуть его вам во время выполнения.Как я сказал в своем комментарии:
если вы полностью уверены в программе всегда будучи помещенным в один и тот же каталог для всех , вы можете установить абсолютный путь, показанный макросом __FILE__
, если отправите полный путь при компиляции;Например, gcc $(pwd)/your-file.c
, при печати __FILE__
будет показан полный путь, который у него был в время компиляции , а не время выполнения.(Однако здесь нельзя добавить достаточное количество заявлений об отказе от ответственности)
Обратите внимание, что существует множество причин, чтобы не использовать этот подход.Я просто предлагаю это в качестве краткосрочного обходного пути для выхода из существующей ситуации кризисного уровня, которая может у вас возникнуть, в то время как вы (надеюсь) более внимательно рассмотрим более желательный подход для обработки конфигураций и поиска путей.