Вы не можете.Вы должны использовать свою систему сборки для определения макроса со значением $HOME
(или эквивалентом в не-unix системе), то есть что-то вроде этого:
gcc -DHOME="/home/username" file.c
или "/Users/username"
для Mac OS Xили "C:\Users\username"
(или что-то) для Windows.По сути, GCC предоставляет флаг -D
для определения макроса в командной строке.Вы можете настроить скрипт (или свою систему сборки), чтобы позаботиться об этом макроопределении, или, возможно, создать системно-зависимый включающий файл для правильного определения макроса HOME
.
Затем в вашемЗаголовок C вы можете сделать:
#define LOGMMBOXMAN HOME "/mmbox/LOGmmboxman"
Обратите внимание, что в C последовательные строковые литералы объединяются.Таким образом, этот макрос расширяется до:
"/home/username" "/mmbox/LOGmmboxman"
Который C интерпретирует как
"/home/username/mmbox/LOGmmboxman"
РЕДАКТИРОВАТЬ: Все это мышление, а я не думал!Ох!
Как уже отмечали другие, вы, вероятно, не хотите этого делать.Это жестко закодирует вашу программу для работы с домашним каталогом одного конкретного пользователя.Это, вероятно, вызовет проблемы, если вы хотите, чтобы каждый пользователь использовал вашу программу, но каждый из них должен хранить свои собственные отдельные файлы.
Ответ Ninefingers - это то, что вы больше всегоскорее всего ищу.В случае, если вам когда-нибудь понадобится описанный выше метод (т.е. хранение файлов приложения в определенном для системы месте), я оставлю свой ответ без изменений, но я надеюсь, что он вам здесь не поможет.