Kann nicht Kompilieren von C++ - Code Mit Sleep() auf Linux - Welche Bibliothek Gehören?
Ich versuche zu kompilieren, einige-code, verwendet die Zeile:
Sleep(10);
In meiner IDE, alles, was ich zu tun ist, entweder schreiben:
using namespace std;
oder
#include <unistd.h>
und kompiliert er fein!
Jedoch beim kompilieren über die Kommandozeile auf Linux, alles ist nicht OK. Der compiler sagt mir, dass Sleep
ist nicht definiert. Ich kompiliere mit:
g++ -lglut -lGL -lm -o PROGRAM.exe PROGRAM.cpp
Anderen code, den ich geschrieben habe, der nicht Sleep
kompiliert fein in dieser Art und Weise.
Welche Bibliothek muss ich liefern, um den linker (mit -l
), um die Sleep
Funktion erkannt?
- Sie haben einen Tippfehler:
man 3 sleep
- Uhh, wieder zu kommen? Kompiliert er fein in meiner IDE
Sleep
ist ein windows-system nennen. Es existiert nicht in Linux. Sie benötigensleep
oderusleep
. Wenn Sie möchten, dass code, der kompiliert auf beiden, werden Sie wahrscheinlich wollen, schreiben eine wrapper-Funktion für ein oder t ' other.- Gotcha. Ich habe versucht, einen wrapper wie so: #ifdef _WINDOWS #include <windows.h> #else #include <unistd.h> #define Sleep(x) usleep((x)*1000) #endif Aber mein problem ist, usleep, ist nicht definiert und damit nicht kompilieren auf Windows trotz, mich mit dem unistd header. Ich dachte, es war da drin enthalten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sleep
ist eine windows-Funktion. Auf Unix verwenden Sie dieusleep
. Beachten Sie, dassusleep
dauert Mikrosekunden, nicht Millisekunden.C++11 bringt Parallelität und eine sleep-Funktion der standard-Bibliothek.
Sleep
undusleep
sind nicht tragbar. Verwenden Sie die sleep-Dienstprogramm in der standard-Bibliothek statt.Hier die C++14 standard-literal
s
für Sekunden ist auch (brachte mit dem namespacestd::literals
).10s
entsprichtstd::chrono::seconds(10)
.Gibt es entsprechende standard-Literale für andere die Dauer, die z.B.
ms
,us
undns
.Keine Bibliotheken geliefert werden müssen, um dem linker mit, was oben.
Live Beispiel
Liefern Portabilität, die Sie unbedingt nutzen:
Ansonsten, wenn du C++11, erwägen @Snps Antwort.
Müssen Sie die Verwendung von Kleinbuchstaben
s
statt großS
.Ihre Funktion wird der namesleep()
stattSleep()
.