printf перед утверждением не работает - PullRequest
1 голос
/ 13 октября 2011

Я думаю, что видел эту проблему раньше, и я уверен, что есть лучшее решение, поэтому спрашиваю ..

Во время отладки я обнаружил, что любые printf до assert работают не очень хорошо. Они просто не напечатаны большую часть времени. Я попытался добавить fflush(stdout), но, похоже, это не помогло.

Есть еще мысли или альтернативы?

Пример:

printf... <- not printed
printf... <- not printed due to the assert. stdout not flushed?

do something

assert()

Ответы [ 2 ]

0 голосов
/ 14 октября 2011

Вы компилируете с оптимизацией - потому что фактический порядок printfs / assert может не соответствовать ожидаемому.

0 голосов
/ 14 октября 2011

Звоните fflush(stdout) до assert. Или, если stdout не был перенаправлен и ссылается на терминал, достаточно написать новую строку в конце вашего сообщения. По умолчанию stdout буферизуется (строка буферизируется на терминалах; в противном случае полностью буферизуется), и, следовательно, вывод не будет записываться фактически до тех пор, пока выходной буфер не переполнится или не будет получен символ новой строки (в режиме буферизации строки) или fflush.

...