无法在Linux上编译带有Sleep()的C++代码 - 包含哪个库?

Rom*_*der 1 c++ linux sleep

我正在尝试编译一些使用该行的代码:

Sleep(10);
Run Code Online (Sandbox Code Playgroud)

在我的IDE中,我所要做的就是写:

using namespace std;
Run Code Online (Sandbox Code Playgroud)

要么

#include <unistd.h>
Run Code Online (Sandbox Code Playgroud)

它编译好!

但是,在Linux上通过命令行进行编译时,一切都不正常.编译器告诉我这Sleep是未定义的.我编译使用:

g++ -lglut -lGL -lm -o PROGRAM.exe PROGRAM.cpp
Run Code Online (Sandbox Code Playgroud)

我写的其他代码不使用Sleep这种编译方式.

我需要向链接器(with -l)提供哪些库才能Sleep识别该函数?

Snp*_*nps 10

C++ 11为标准库带来了并发和休眠功能.Sleep并且usleep便于携带.请改用标准库中的sleep实用程序.

#include <thread>
#include <chrono>

int main() {
    using namespace std::literals;
    std::this_thread::sleep_for(10s);
}
Run Code Online (Sandbox Code Playgroud)

这里还使用了C++ 14 标准文字s秒(使用命名空间引入std::literals).10s相当于std::chrono::seconds(10).

有相应的标准文字用于其他时间段为好,如ms,usns.

不需要使用上面的内容向链接器提供库.

Live example


doh*_*shi 6

Sleep是一个Windows功能.在Unix上使用usleep.请注意,usleep需要微秒,而不是毫秒.