Windows中缺少conio.h.

时间:2014-08-06 18:32:05

标签: c windows conio

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

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

谢谢!

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

conio不属于标准库,您不能指望它可以跨平台,甚至可以在同一平台上的编译器之间。

非标准的是,Borland和Microsoft都使用了conio这个名称,用于具有不同API的库 - 微软的规模要小得多。因此,出于这个原因,您可以避免它的可移植性。

这不是conio不在Windows上的问题,Cygwin是用于在Windows上构建和运行POSIX代码的POSIX API层和工具链。随附的库与Visual Studio提供的库无关。

有许多解决方案,包括:

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

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

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

答案 2 :(得分:-1)

conio.h 是Borland的Turbo C编译器提供的非标准头文件,它是一个不合规的C编译器本身。 Cygwin是一个类似unix的环境的windows仿真,它没有它(事实上,我不知道有任何其他编译器提供conio.h)。

Can someone please tell me how to resolve this issue.

解决问题的最佳方法是根本使用它

相反,如果您需要提供类似功能的内容并使用以下内容进行编译,则可以使用 ncurses

gcc test.c -lncurses