繁体   English   中英

什么会延迟我的C程序的printf输出?

[英]What could be delaying the printf output of my C program?

我的代码的简化版本是:

#include "externalstuff.h"
void main(){
    printf("Hello?");
    /* make calls to externalstuff
    ....
    */
}

我没有写externalstuff.h ,所以我不确定那里到底发生了什么。

externalstuff的调用需要一些时间才能执行。 我希望"Hello?" 将被打印,然后我将不得不等待这些外部调用完成,然后我的程序将结束。 但是似乎正在发生的事情是"Hello?" 只有得到正确的印在我的节目结束,经过漫长的等待externalstuff

externalstuff.h中的某些内容可能会延迟此输出吗? 如果是这样,怎么办?

我在Widnows 7的cygwin中使用gcc。

缓冲会延迟程序的输出。 调用printf ,输出将存储在缓冲区中,直到发生以下三种情况之一:

  • 内部缓冲区的长度不足以容纳输出,或者
  • 您调用fflush(stdout)以启动将缓冲区显式发送到控制台,或者
  • 您打印'\\n'字符,并且输出发送到控制台(与将输出发送到文件相反)。

如果您不喜欢这种行为,并且不介意性能降低,可以致电

setbuf(stdout, NULL);

禁用缓冲。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM