У меня проблемы с инициализацией глобальной переменной. Мой C ++ немного заржавел, поэтому я не могу вспомнить причину, по которой мой код не работает.
файл. cpp
const char * write_path = &(std::string(getenv("FIFO_PATH")) + "/pythonread_fifo")[0];
int main(int argc, char**argv)
{
std::cout << "printing a string: ";
std::cout << (std::string(getenv("FIFO_PATH")) + "/pythonread_fifo\n");
std::cout << "printing a const char*: ";
std::cout << &(std::string(getenv("FIFO_PATH")) + "/pythonread_fifo")[0] << std::endl;
std::cout << "printing write_path:";
std::cout << write_path;
std::cout << write_path << std::endl;
std::cout << "printing FIFO_PATH:" << std::string(getenv("FIFO_PATH"));
}
Как Предпосылка: FIFO_PATH был правильно добавлен в bashr c, и он работает, однако, когда я запускаю эту программу, это результат:
printing a string: /home/Processes/FIFOs/pythonread_fifo
printing a const char*: /home/Processes/FIFOs/pythonread_fifo
printing write_path:
printing FIFO_PATH:/home/Processes/FIFOs
Как видите, write_path
полностью пуст.
Что еще более странно для меня, так это то, что если я определю write_path как:
const char * write_path = "/home/Processes/FIFOs/pythonread_fifo";
, то write_path
больше не будет пустым, он будет правильно инициализирован и напечатан.
Как может Я это решаю? Или, по крайней мере, почему это происходит?
EDIT: проблема НЕ связана с глобальным значением write_path
. Я поместил определение внутри основного, и когда я пытаюсь напечатать write_path
, оно все еще пустое