Was ist das richtige #include für die Funktion ‘sleep()’?

Lesezeit: 3 Minuten

Benutzeravatar von trludt
trludt

Ich verwende das Big Nerd Ranch-Buch Objective-C Programming, und es beginnt damit, dass wir in den ersten Kapiteln in C schreiben. In einem meiner Programme hat es mich angelegt, ich nutze die Sleep-Funktion. In dem Buch sagte es mir zu setzen #include <stdlib.h> unter dem #include <stdio.h> Teil. Dies soll die Warnung beseitigen, die besagt, dass “Implizite Deklaration der Funktion ‘sleep’ in C99 ungültig ist”. Aber aus irgendeinem Grund, nachdem ich gesetzt habe #include <stdlib.h>die Warnung verschwindet nicht.. Dieses Problem hindert das Programm nicht daran, gut zu laufen, aber ich war nur neugierig auf welches #include Ich musste verwenden!

  • Wenn Sie eine größere IDE (NetBeans, IntelliJ IDEA, Eclipse) verwenden. Geben Sie den Namen einer beliebigen Funktion ein, dann Alt + Eingabetaste, um die Bibliothek, die sie enthält, automatisch zu importieren.

    – T04435

    8. März 2016 um 7:39 Uhr

  • @T04435: In C werden Bibliotheken nicht importiert. Der Compiler tut es nicht brauche sie. Der Linker könnte verlinken sie, aber nur nach der Compiler ist erledigt. In C der Compiler braucht einen Prototyp einer Funktion, um eine Funktion zu verwenden. Typischerweise kommen Prototypen herein Header-Dateien (.h).

    – alk

    1. Juli 2018 um 11:32 Uhr


Benutzeravatar von simonc
Simonc

Der Schlaf Manpage sagt, es ist deklariert in <unistd.h>.

Zusammenfassung:

#include <unistd.h>

unsigned int sleep (unsigned int Sekunden);

  • Ich hatte nicht! Vielen Dank! es hat mich nur irgendwie gestört, weil das Buch sagte, dass die die Warnung loswerden würde … komisch, haha ​​@simonc

    – trludt

    11. Februar 2013 um 18:05 Uhr

  • Wäre es besser, die Funktion sleep() oder time() zu verwenden, um eine Verzögerung zu erzeugen?

    – LandonZeKepitelOfGreytBritn

    19. Mai 2017 um 17:27 Uhr

  • @LandonZeKepitelOfGreytBritn: Zumindest die C-Funktion time() tut nicht erstellte eine Verzögerung, zumindest keine gut definierte Verzögerung, basierend auf den übergebenen Argumenten.

    – alk

    10. September 2020 um 10:08 Uhr

sleep ist eine Nicht-Standard-Funktion.

  • Unter UNIX müssen Sie einschließen <unistd.h>.
  • Unter MS-Windows, Sleep ist eher aus <windows.h>.

Überprüfen Sie in jedem Fall die Dokumentation.

  • bzgl. des C-Standards. bzgl. POSIX ist es

    – Ivotron

    10. Februar 2014 um 18:48 Uhr

  • Unter UNIX ist Sleep tatsächlich usleep und dauert Mikrosekunden (Millisekunden * 1000) anstelle von Sekunden.

    – Agostino

    6. Februar 2017 um 14:59 Uhr

  • Verwenden Sie nicht usleep: “4.3BSD, POSIX.1-2001. POSIX.1-2001 erklärt diese Funktion für obsolet; verwenden Sie stattdessen nanosleep(2). POSIX.1-2008 entfernt die Spezifikation von usleep().” linux.die.net/man/3/usleep

    – Jetski S-Typ

    6. Juni 2018 um 8:03 Uhr


  • Windows Sleep() und POSIX’ sleep() sind nicht das Gleiche. Sie nehmen unterschiedliche Argumente. Ersteres dauert Millisekunden, letzteres Sekunden!

    – alk

    10. September 2020 um 10:06 Uhr


Folgendes verwende ich für einen plattformübergreifenden Code:

#ifdef _WIN32
#include <Windows.h>
#else
#include <unistd.h>
#endif

int main()
{
  pollingDelay = 100
  //do stuff

  //sleep:
  #ifdef _WIN32
  Sleep(pollingDelay);
  #else
  usleep(pollingDelay*1000);  /* sleep for 100 milliSeconds */
  #endif

  //do stuff again
  return 0;
}

  • usleep() wurde in POSIX.1-2008 entfernt. Verwenden Sie nanosleep(). linux.die.net/man/3/usleep

    – Jetski S-Typ

    6. Juni 2018 um 8:06 Uhr

Benutzeravatar von alk
alk

Was ist das richtige #include für die Funktion ‘sleep()’?

sleep() ist nicht Standard C, aber POSIX, also sollte es sein:

#include <unistd.h>

Benutzeravatar von Carl Norum
Karl Norum

sleep(3) ist in unistd.hnicht stdlib.h. Typ man 3 sleep in Ihrer Befehlszeile, um für Ihren Computer zu bestätigen, aber ich nehme an, Sie sind auf einem Mac, da Sie Objective-C lernen, und auf einem Mac benötigen Sie unistd.h.

1424200cookie-checkWas ist das richtige #include für die Funktion ‘sleep()’?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy