我想我以前见过这个问题,我打赌那里有更好的解决方案,所以问......
在调试过程中,我发现printf
之前的任何assert
都无效。它们大部分时间都不会打印出来。我尝试添加fflush(stdout
)但似乎没有帮助。
还有其他想法或其他选择吗?
示例:
printf... <- not printed
printf... <- not printed due to the assert. stdout not flushed?
do something
assert()
答案 0 :(得分:0)
在fflush(stdout)
之前致电assert
。或者,如果没有重定向stdout并引用终端,只需在消息末尾写一个换行就足够了。默认情况下,stdout是缓冲的(在终端上缓冲线路;否则完全缓冲),因此直到输出缓冲区溢出或遇到换行符(在行缓冲模式下)或fflush
时才会实际输出。
答案 1 :(得分:0)
您是否正在使用优化进行编译 - 因为printfs / assert的实际顺序可能不符合您的预期。