C++ C++;微核库特问题
好的,我正在做我的操作系统作业。我需要编写一个微内核,它能够处理线程、信号量、事件等基本内容。 BCC 3.1正在模仿我的系统环境。经典调试真的没有用。我正在用cout风格调试。 问题是cout的怪异行为。它以块或其他形式写出来。如果我做了,比如说,40个字母,它会把所有的东西都写出来。如果我做了39个,它不会写任何一个。另一方面,如果我在40到79行之间,它仍然只写前40行,但如果我写了80行,它们都可以,等等。数字不准确,我不确定到底是什么数字。但我也注意到改变字符串的长度也会产生同样的效果。只是我不知道有多少个字符等于一个不能调用。C++ C++;微核库特问题,c++,debugging,cout,borland-c++,microkernel,C++,Debugging,Cout,Borland C++,Microkernel,好的,我正在做我的操作系统作业。我需要编写一个微内核,它能够处理线程、信号量、事件等基本内容。 BCC 3.1正在模仿我的系统环境。经典调试真的没有用。我正在用cout风格调试。 问题是cout的怪异行为。它以块或其他形式写出来。如果我做了,比如说,40个字母,它会把所有的东西都写出来。如果我做了39个,它不会写任何一个。另一方面,如果我在40到79行之间,它仍然只写前40行,但如果我写了80行,它们都可以,等等。数字不准确,我不确定到底是什么数字。但我也注意到改变字符串的长度也会产生同样的效果
如有要求,可提供其他信息。感谢转发。听起来像是缓冲,不管事实是
std::cout
不应该缓冲输出。在任何情况下,您都可以尝试通过以下方式刷新cout
std::cout.flush()代码>
或
std::coutcout
已缓冲。flush()
在需要时进行刷新,或者附加endl
s进行刷新,或者改为写入cerr
,这是无缓冲的。cerr不起作用。冲洗(cout)无效。我的意思是,cerr确实写出来了,但写出来的方式和cout一样。那么您的环境可能也在缓冲。顺便说一句,我想你指的是std::cout.flush()
,而不是flush(std::cout)
?flush不起作用。我怎样才能知道它是否在缓冲?冲洗根本没有效果。。。我尝试了最后一行,但得到了编译器错误:pubsetbuf不是streambuf的成员。