C - 断言之前的 printf 不起作用



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

在调试过程中,我发现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的实际顺序可能与您期望的不同

相关内容

  • 没有找到相关文章

最新更新