我想我以前见过这个问题,我打赌有更好的解决方案,所以问…
在调试过程中,我发现assert
之前的任何printf
都不能正常工作。它们大部分时间都不会被打印出来。我试着添加fflush(stdout
),但它似乎没有帮助。
有其他的想法或选择吗?
的例子:
printf... <- not printed
printf... <- not printed due to the assert. stdout not flushed?
do something
assert()
在assert
之前调用fflush(stdout)
。或者,如果stdout没有被重定向并且指向终端,那么只需在消息末尾写一个换行符就足够了。默认情况下,stdout被缓冲(在终端上行缓冲;因此,在输出缓冲区溢出或遇到换行符(在行缓冲模式下)或fflush
之前,实际上不会写入输出。
您是否使用优化编译-因为printfs/assert的实际顺序可能与您期望的不同