断言之前的printf不起作用

时间:2011-10-13 19:02:16

标签: c printf assert

我想我以前见过这个问题,我打赌那里有更好的解决方案,所以问......

在调试过程中,我发现printf之前的任何assert都无效。它们大部分时间都不会打印出来。我尝试添加fflush(stdout)但似乎没有帮助。

还有其他想法或其他选择吗?

示例:

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

do something

assert()

2 个答案:

答案 0 :(得分:0)

fflush(stdout)之前致电assert。或者,如果没有重定向stdout并引用终端,只需在消息末尾写一个换行就足够了。默认情况下,stdout是缓冲的(在终端上缓冲线路;否则完全缓冲),因此直到输出缓冲区溢出或遇到换行符(在行缓冲模式下)或fflush时才会实际输出。

答案 1 :(得分:0)

您是否正在使用优化进行编译 - 因为printfs / assert的实际顺序可能不符合您的预期。