Zeit vergehen lassen
-
Wikinger75 schrieb:
"windows.h" ist aber ein C Header, die müsste doch auch in "windows" definiert sein oder?
Header der Standardbibliothek werden ohne h geschrieben, ansonsten wirst du in der Regel mit Dateiendung arbeiten.
windows.h ist aber kein Header der C oder C++-Standardbibliothek. Somit gelten deren Regeln nicht für windows.h (Zudem müsste es nach der Notation dann auch cwindows heißen).
cu André
-
Warum nicht was plattformunabhaengiges?
#include <iostream> #include <ctime> using namespace std; void sleep(unsigned int seconds) { time_t t = time(NULL); // Sekunden seit 1.1.1970 afaik while (time(NULL)-t<seconds) // aktuelle Zeit (time(NULL)) minus gespeicherte Zeit gibt // die vergangenen Sekunden zurueck ; // mach nichts } int main() { cout << "Start" << endl; sleep(5); cout << "Ende" << endl; cin.get(); return 0; }Also so haette ich das zumindest geloest

Gruss
Cartman
-
Klar Eric, wenn man mal schnell was testen will

-
Eric Cartman schrieb:
Warum nicht was plattformunabhaengiges?
Da gibt es aber deutlich bessere Alternativen als deine Lösung. Was du machst ist Busy Waiting, wovon man dringend abraten sollte.
Für ein platformunabhängiges Sleep nimmt man am besten die Boost.Thread Bibliothek. Boost sollte ein C++ Entwickler wohl sowieso auf der Platte haben:
Boost Libraries
Boost.Thread - this_thread::sleepGrüssli
-
Wieso Schmeißt ihr mit Libs herum? Als der OP libs zurzeit nötig hätte...
-
Na, weil die so schön süß und fluffig sind. Ist doch klar!
cheers, Swordfish
-
Angeber schrieb:
Klar Eric, wenn man mal schnell was testen will

???
@Dravere
Boost habe ich nicht. Ausserdem habe ich nie behauptet, dass meine Loesung gut oder gar die beste waere, ich wollte lediglich helfen und zeigen, wie ich das geloest haette. Ich persoenlich versuche immer so plattformunabhaengig wie moeglich zu programmieren.
Desweiteren moechte ich noch erwaehnen, dass ich noch ein blutiger C++-Anfaenger bin und mir Fehler dieser Art erlauben darf
(wobei ich immernoch nichts falsches an meiner Loesung erkenne...)Gruss
Cartman
-
Eric Cartman schrieb:
Angeber schrieb:
Klar Eric, wenn man mal schnell was testen will

???
@Dravere
Boost habe ich nicht. Ausserdem habe ich nie behauptet, dass meine Loesung gut oder gar die beste waere, ich wollte lediglich helfen und zeigen, wie ich das geloest haette. Ich persoenlich versuche immer so plattformunabhaengig wie moeglich zu programmieren.
Desweiteren moechte ich noch erwaehnen, dass ich noch ein blutiger C++-Anfaenger bin und mir Fehler dieser Art erlauben darf
(wobei ich immernoch nichts falsches an meiner Loesung erkenne...)Gruss
CartmanBoost == plattformunabhaengig
Dann poste keine Schlimmen Code-Beispiele für andere Anfänger falls du selbst einer bist. Auf dem Wikipedia link steht wieso es schlimm ist.
-
Hackt mal nicht so auf Eric rum... Es mag vielleicht nicht die beste Lösung sein, aber eine Lösung die funktioniert. Von daher schlagt lieber was besseres vor, außer einen Anfänger mit Boost rum zu hantieren lassen und nur zu kritisieren.
-
@Eric,
Mir war schon klar, dass du ein Anfänger bist. Sieht man auch daran, dass du diese Lösung vorgeschlagen hast. Und gerade weil ich dachte, dass du ein Anfänger bist, habe ich dich verbessert, damit du hoffentlich was lernst. Zudem wird auch so abgesichert, dass niemand deine Lösung als eine gute platformunabhängige Lösung sieht
Und wieso deine Lösung falsch ist, steht im Wikipedia Artikel. Falls du den gelesen hast und es immer noch nicht verstehst, dann ist Hopfen und Malz verloren und du solltest lieber aufhören zu programmieren ...
Scherz 
Das Problem ist, dass du CPU Zeit verbratest, um nichts zu machen. Ein Sleep soll ja eigentlich den Prozess schlafen legen und nicht zu 100% CPU Verbrauch führen, wodurch das ganze Betriebsystem und andere Programme ausgebremst werden.@FreakY<3Cpp,
Was kennst du für bessere platformunabhängige Lösungen? Sobald man ein sleep in einer sinnvollen platformunabhängigen Lösungen haben möchte, braucht man ein wenig mehr C++ Kentnisse, Ahnung über Compiler und Linker, damit man gleich eine entsprechende Bibliothek nutzen kann.
Und ich denke es ist am besten, wenn der Neuling da Boost als erstes zu hören bekommt, da er später diese Bibliothek am meisten nutzen kann.Grüssli
-
Dravere schrieb:
@Eric,
Mir war schon klar, dass du ein Anfänger bist. Sieht man auch daran, dass du diese Lösung vorgeschlagen hast. Und gerade weil ich dachte, dass du ein Anfänger bist, habe ich dich verbessert, damit du hoffentlich was lernst. Zudem wird auch so abgesichert, dass niemand deine Lösung als eine gute platformunabhängige Lösung sieht
Wenn man nichts macht, lernt man auch nichts. Und dieses Forum ist ideal dafuer geeignet seine Kenntnisse zu vertiefen bzw. vieles neues dazuzulernen. Und nur weil ich einen "kleinen" Fehler gemacht, muss man mich ja nicht totschlagen (damit meine ich jetzt nicht dich), sondern kann mich hoeflich ausbessern und eventuelle Fehler erlaeutern.Dravere schrieb:
Und wieso deine Lösung falsch ist, steht im Wikipedia Artikel. Falls du den gelesen hast und es immer noch nicht verstehst, dann ist Hopfen und Malz verloren und du solltest lieber aufhören zu programmieren ...
Scherz 
Das Problem ist, dass du CPU Zeit verbratest, um nichts zu machen. Ein Sleep soll ja eigentlich den Prozess schlafen legen und nicht zu 100% CPU Verbrauch führen, wodurch das ganze Betriebsystem und andere Programme ausgebremst werden.Jetzt ist mir natuerlich alles klar. Ich gebe zu, ich hab den Artikel nur kurz ueberflogen, da ich in der frueh nicht mehr Zeit hatte.
Bestimmt koennte man das mit der C++ Standardbibliothek schaffen, ohne "busy" zu "waiten"

Aber wenn es sowieso nur um Windows geht, dann kann man natuerlich auch auf die Api-Funktion zurueckgreifen ohne sich mit einer Bibliothek (boost) rumschlagen zu muessen.Gruss
Cartman