«Гопник-2»: буферизация

Как я писал уже сегодня, мне пришлось вчера выключить буферизацию вывода, так как текст визуально «застревал» на экране. Добавление fflush проблему решало, но не будешь же выставлять этот вызов везде, где есть вывод, это несколько сотен мест.

В общем, вчера я сделал попроще, а сегодня пришла в голову более удачная идея обернуть printf в макрос:

// включаем буферизацию вывода
setvbuf(stdout, nullptr, _IOFBF, 1000);
// делаем макрос со сбросом буфера
#define PRINTF(...) { printf (__VA_ARGS__); fflush(stdout); }

Работает просто отлично, вывод текста стал выглядеть комфортно.

Комментарии 6

Pavel Veretennikov Ⅰ⁤ № 1
у консоли Виндоуз до сих пор большие проблемы с кодировкой UTF-8
про галочку Use Unicode в настройках Windows вы знаете? Она как-то влияет на консольные приложения

Евгений Степанищев автор № 2
у меня в свойствах консоли написано «UTF-8», но это ничего не даёт
Pavel Veretennikov Ⅰ⁤ № 5
Я не знаю какая у вас проблема с выводом в консоль, поэтому гадаю, не обращайте внимания.
1. Если программа сама эту галочку включает, то галочка не начинает действовать пока Windows не перезагрузится
2. Функция ее простая. Когда эта галочка стоит, то UTF-8-строка выводится в консоль как есть без перекодировки. Когда галочка не стоит, то UTF-8-строка будет перекодирована в 8 битную кодировку, которая выбирается выше в этом окошке свойств.
Евгений Степанищев автор № 6
Проблемы в выводом на консоль уже нет, я её победил относительно просто, проблема есть со вводом.

1) программа не включает галочку, она управляет режимом консоли.

2) проблема со вводом, это написано в моей заметке