Forum: PC-Programmierung MinGW (CodeBlocks 8.02) : sleep()


von gast (Gast)


Lesenswert?

Kann es sein, dass die sleep() Funktion im MinGW nicht vorhanden ist. 
Weder in <windows.h> bzw. <dos.h> ist die Funktion enthalten.

Kennt jemand von euch das Problem bzw. eine einfache Alternative ???

von Bobby (Gast)


Lesenswert?

Probier's doch mal mit

#include <unistd.h>

von gast (Gast)


Lesenswert?

"
Probier's doch mal mit

#include <unistd.h>
"

Geht leider auch nicht :-(

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Benutze Sleep(millisekunden).
Das ist in windows.h enthalten. Du kannst dir ein

#define sleep(x) Sleep((x))

machen, wenn du die Source nicht grossflächig ändern willst,

Checke unbedingt die Argumente des sleep, ob es Sekunden (POSIX sleep) 
oder Millisekunden (Windows Sleep) sind. Ggf. brauchst du einen 
Korrekturfaktor:

#define sleep(x) Sleep((x)*1000)

von Bobby (Gast)


Lesenswert?

Wer meckert denn, der Compiler oder der Linker?
Poste mal Dein Makefile!

von gast (Gast)


Lesenswert?

Hier die Fehlermeldung :

------------- Build: Debug in WriteBarcode ---------------

Compiling: main.cpp
J:\Barcode_Produktion\Barcode_Write\WriteBarcode\main.cpp: In function 
`int main(int, char**)':
J:\Barcode_Produktion\Barcode_Write\WriteBarcode\main.cpp:159: error: 
`sleep' was not declared in this scope
J:\Barcode_Produktion\Barcode_Write\WriteBarcode\main.cpp:159: warning: 
unused variable 'sleep'
Process terminated with status 1 (0 minutes, 1 seconds)
1 errors, 1 warnings



Mit <windows.h> und sleep(1000) (für 100ms). Bzgl. eine nicht 
funktionierenden sleep-Fkt in MinGW habe ich bereits unter Google schon 
etliche Hinweise gelesen. Doch nirgends stand etwas eindeutiges darüber 
dass es generell nicht geht.

von Timmo H. (masterfx)


Lesenswert?

Aufgrund der Fehlermeldungen würde ich mal sagen, dass da was 
Grundlegendes falsch ist "unused variable 'sleep'".
Achja und wie bereits gesagt wurde, die Funktion wird mit großem "S" 
geschrieben. Sofern die windows.h eingebunden ist sollte es klappen. Hab 
schon zig Anwendungen damit gemacht.
Ansonsten bitte deinen Quellcode posten.

von gast (Gast)


Lesenswert?

Ob mit s bzw. S wird beides nicht akzeptiert. Windows.h ist auch 
eingebunden. Ich werde nun einmal den Compiler-Wechseln (Borland 5.5). 
Wie schon zuvor gesagt, sind im Netz diverse Hinweise zu finden, dass 
die Sleep-Fkt u.U. mit dem MinGW nicht richtig bzw. gar nicht 
funktioniert.
Daher habe ich hier mal kurz angefragt ob schon jemand die Funktion mit 
MinGW benutzt hat und diesbzgl. seine Erfahrung gemacht hat.

von Timmo H. (masterfx)


Lesenswert?

Die windows.h bindet die winbase.h ein. Darin steht:
1
WINBASEAPI void WINAPI Sleep(DWORD);
^^Das ist aus meinem MinGW-Compiler. Würde daher gerne mal deinen 
Quellcode sehen um zu gucken was bei mir kommt.

von Bobby (Gast)


Lesenswert?

sleeptest.c
-----------
1
#include <windows.h>
2
3
int main (int argc, char**argv)
4
{ sleep (1000); printf("READY\n");
5
return 0;
6
}

Makefile:
---------
CFLAGS=-Wall

sltest: sltest.c
        gcc -o sltest sltest.c -lws2_32

Aktivierung:
------------
make
./sltest


Das tut es bei mir, nur mit dem Unterschied zu Unix,
dass die Zeitangabe als Millisekunden genommen wird.

von Bobby (Gast)


Lesenswert?

Habe vergessen zu sagen, dass ich die Kombination MinGW / Msys
benutze.

von gast (Gast)


Lesenswert?

Problem gelöst :-) Nachdem ich CodeClocks neu installert habe 
funktioniert auch die Sleep()-Fkt. aus <windows.h>

von Jens (Gast)


Lesenswert?

Du kannst aber auch Sleep im "Kernel32" nutzen!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.