Мне потребовалось некоторое время, чтобы понять, почему какой-то выход cout, кажется, исчезает в эфире. Преступник:
std::cout<< "This line shows up just fine" << std::endl;
const char* some_string = a_function_that_returns_null();
if (some_string == 0)
std::cout<< "Let check the value of some_string: " << some_string << std::endl;
std::cout<< "This line and any cout output afterwards will not show up" << std::endl;
Вывод фрагмента выше:
This line shows up just fine
Let check the value of some_string:
Таким образом, подача NULL в cout отключит весь вывод после этого. Зачем? И как это исправить?
Это не всегда происходит - сотрудник с тем же кодом получает весь ожидаемый результат. И в случае, если вы задаетесь вопросом, почему я не могу просто предотвратить подачу NULL в cout с утверждением if: я работаю в большой базе кода и не знаю, где еще это происходит! Все, что я знаю, - это утверждения, которые я не показывал.
Дополнительная информация:
a_function_that_returns_null()
на самом деле getenv("HOST")
. Я проверил в командной строке через echo $HOST
, что переменная HOST пуста. Если я делаю export HOST=
(bash flavor), вывод все там. Я понятия не имею, что содержит переменная HOST, а не то, что getenv
возвращает первоначально, прежде чем изменять переменную HOST; все, что я знаю, это (some_string == 0)
.