6

我通常使用 VS,但第一次尝试 cygwin。我正在使用 Windows 7,但在使用 gcc 编译 hello world 程序时,它显示“致命错误:conio.h:没有这样的文件或目录”。

我使用的是 Windows 7,我的系统似乎缺少 conio.h。有人可以告诉我如何解决这个问题。

谢谢!!

4

2 回答 2

3

在 Cygwin 中不存在任何名为conio.h!的头文件。此外,您也不需要它,因为它会在不使用的情况下自动为您保留屏幕,getch()并且您在 Cygwin 中clrscr()确实拥有!system("clear")

于 2014-08-06T18:38:23.023 回答
1

conio 不是标准库的一部分,您不能期望它可以跨平台使用,甚至可以在同一平台上的编译器之间使用。

作为非标准名称,Borland 和 Microsoft 都使用 conio 这个名称来表示具有不同 API 的库 - Microsoft 的规模要小得多。因此,出于这个原因,您可能会为了便携性而避免使用它。

conio 不在 Windows 上不是问题,Cygwin 是一个 POSIX API 层和工具链,用于在 Windows 上构建和运行 POSIX 代码。它提供的库独立于 Visual Studio 提供的库。

有许多解决方案,包括:

  • 使用替代控制台 I/O 库,例如 ncurses。
  • 使用这样的 Linux 的 conio 源代码实现(它使用 ncurses 并实现 Borland 的 API)。

如果您有很多使用 conio 的遗留代码,则第二种解决方案可能很有用,但如果您只是想阻止控制台窗口关闭,则这种解决方案就有点过头了。为此,您可以getchar()在任何情况下使用并接受您必须按 Enter 而不是任何键。

如果您使用 Cygwin 只是为了能够在 Windows 上使用 GCC,则最好使用 MinGW/GCC。这使用 Microsoft 的 C 运行时而不是 GNU,以及 Win32 API 而不是 POSIX。

于 2014-08-06T19:47:24.930 回答