我在 Windows 7 x64 上为 C/C++ 运行 Eclipse CDT (Helios)。起初,我遇到了在 Eclipse 控制台中运行直到程序退出时才出现输出的问题,即使它在 Windows 控制台中运行时也出现了。我发现这与标准输出流上的缓冲有关。我能够通过以下方式禁用缓冲:
setvbuf(stdout, NULL, _IONBF, 0);
但是现在我无法弄清楚为什么即使在控制台中按下键时 kbhit() 总是返回 0。我尝试在标准输入上禁用缓冲:
setvbuf(stdin, NULL, _IONBF, 0);
但这没有任何效果。我的程序是一个 shell 应用程序。我正在使用 kbhit() 和 getch() 来读取输入,这在程序在 Windows 控制台中运行时有效,但在 Eclipse 控制台中无效。我在这里想念什么?