Я пытаюсь прочитать переменную окружения в C ++ согласно эта документация. Мой код выглядит так:
char * val;
val = getenv( "smartDir" );
ShowMessage( val );
delete val;
Моя проблема в том, что val всегда заканчивается NULL, как будто переменная окружения не существует. Тем не менее, я четко определил переменную, как вы можете видеть здесь:
Что я здесь не так делаю?
getenv
(увидеть Вот, часть о неопределенном поведении)Чтобы упростить тестирование: большинство IDE предоставляют параметр «Environment» в настройках «Debugging» — вы можете изменить env, передаваемый дочернему процессу (вашей программе) (он есть в Visual, у QtCreator, вероятно, в C ++ Builder и т. Д.). )
Если вы запускаете свою программу из консоли: используйте SET var=value
вместо изменения глобального env сделать локальное изменение перед передачей env дочернему процессу.
Оба решения не изменяют глобальные env и позволяют быстро тестировать различные настройки env.