断言之前的 printf 不起作用

发布于 2024-12-09 20:34:54 字数 336 浏览 0 评论 0原文

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

在调试过程中,我发现 assert 之前的任何 printf 都不能很好地工作。大多数时候它们根本不被打印出来。我尝试添加 fflush(stdout) 但似乎没有帮助。

还有其他想法或替代方案吗?

例子:

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

do something

assert()

I think I've seen this issue before and I bet there's better solution out there so asking..

During debugging I found that any printf before assert don't work well. They're simply not printed most of the time. I tried adding fflush(stdout) but it doesn't seem to help.

Any other thoughts or alternatives?

Example:

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

do something

assert()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

坐在坟头思考人生 2024-12-16 20:34:54

assert 之前调用 fflush(stdout)。或者,如果 stdout 尚未重定向并引用终端,则只需在消息末尾写入换行符就足够了。默认情况下,stdout 是缓冲的(在终端上进行行缓冲;否则是完全缓冲),因此在输出缓冲区溢出或遇到换行符(在行缓冲模式下)或遇到 fflush 之前,实际上不会写入输出。

Call fflush(stdout) before assert. Or, if stdout has not been redirected and refers to the terminal, just writing a newline at the end of your message should be sufficient. By default, stdout is buffered (line buffered on terminals; fully buffered otherwise) and thus output will not actually be written until the output buffer overflows or a newline (in line-buffered mode) or fflush is encountered.

美男兮 2024-12-16 20:34:54

您是否进行了优化编译 - 因为 printfs/assert 的实际顺序可能不是您所期望的。

Are you compiling with optimization - because the actual order of the printfs/assert may not be what you expect.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文