使用glibc在Windows中对sleep()的未定义引用

zel*_*lez 0 c windows sleep

我制作了一段简单的代码来记录用户输入的内容:

#include <stdio.h>
#include <unistd.h>

int main() {
  char letter;
  printf("Enter in a character:");
  scanf("%c", &letter);
  sleep(2);
  printf("Letter was: %c", letter);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

在这段代码中,它应该在第8行睡2秒.

不幸的是,即使我有正确的,sleep也是一个未定义的引用.

有没有办法在Windows Vista中解决此问题?

Jim*_*ter 5

sleep()是POSIX函数,但您使用的是MinGW,它不提供POSIX支持.引用http://lists-archives.com/mingw-users/01723-including-library-for-unistd-h-header.html

请记住,mingw不提供比Microsoft C运行时提供的更多的Unix API.(嗯,实际上它确实如此,但只是更多,没有"困难"的东西.)Microsoft C运行时提供Unix(如open(),read(),close()等函数,但不提供getuid(),getegid等函数( ),getppid().

也不睡觉().如果你想要一个POSIX环境,你需要在Windows上使用Cygwin或其他一些POSIX支持; 见http://en.wikipedia.org/wiki/POSIX#POSIX_for_Windows

如果你只需要MinGW给你+ sleep(),你可以使用Windows Sleep()函数(注意它是大写的),它接受一个参数(以毫秒为单位)并要求你包含Windows.h(而不是unistd.h) ); 使用C在Windows中查看睡眠功能