Мне было интересно, какой смысл засорять? Насколько я могу судить, clog такой же, как cerr, но с буферизацией, поэтому он более эффективен. Обычно stderr - это то же самое, что и stdout, поэтому засорение - это то же самое, что и cout. Это кажется мне довольно неубедительным, поэтому я полагаю, что я неправильно это понимаю. Если я отправляю сообщения журнала в то же место, куда отправляются сообщения об ошибках (возможно, что-то в / var / log / messages), то я, вероятно, не пишу слишком много (так что при использовании забуференный серр). По моему опыту, я хочу, чтобы мои сообщения журнала обновлялись (не буферизировались), чтобы я мог помочь найти сбой (поэтому я не хочу использовать буферизованную засоренность). Очевидно, я всегда должен использовать cerr.
Я бы хотел иметь возможность перенаправлять засорение внутри моей программы. Было бы полезно перенаправить cerr, чтобы при вызове библиотечной процедуры я мог контролировать, куда идут cerr и clog. Могут ли некоторые компиляторы это поддерживать? Я только что проверил DJGPP, и stdout определен как адрес структуры FILE, поэтому запрещается делать что-то вроде "stdout = freopen (...)".
- Можно ли перенаправить засорение, cerr, cout, stdin, stdout и / или stderr?
- Единственное различие между буферизацией и засорением в буферизации?
- Как мне реализовать (или найти) более надежное средство ведения журнала (ссылки, пожалуйста)?