我的代码的简化版本是:
#include "externalstuff.h"
void main(){
printf("Hello?");
/* make calls to externalstuff
....
*/
}
我没有写externalstuff.h
,所以我不确定那里到底发生了什么。
对externalstuff
的调用需要一些时间才能执行。我希望"Hello?"
会被打印出来,然后我必须等待那些外部调用完成,然后我的程序就会结束。但似乎正在发生的事情是"Hello?"
仅在我的计划结束之后才会被打印出来,经过漫长的等待externalstuff
之后。
externalstuff.h
中的某些内容是否可能会延迟此输出?如果是这样,怎么样?
我在Widnows 7上使用gcc in cygwin。
答案 0 :(得分:5)
缓冲会延迟程序的输出。当您调用printf
时,输出将存储在缓冲区中,直到发生以下三种情况之一:
fflush(stdout)
以明确地将缓冲区发送到控制台,或'\n'
字符,输出发送到控制台(而不是将输出发送到文件)。如果您不喜欢这种行为,并且不介意性能稍慢,可以致电
setbuf(stdout, NULL);
禁用缓冲。