Zuvor erhielt ich Warnungen von gcc -std=c99
, dass usleep()
implizit deklariert wurde. Dann stolperte ich über this stackoverflow post, was mich dazu brachte, zu verwenden. Aber jetzt, gcc
sagt mir, dass -D_BSD_SOURCE
veraltet ist und ich stattdessen -D_DEFAULT_SOURCE
verwenden sollte.Was macht -D_DEFAULT_SOURCE?
#warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
Warum ist -D_BSD_SOURCE
veraltet? Warum wird -D_DEFAULT_SOURCE
stattdessen verwendet? Und was macht es?
Ich tat some googling, und die Ergebnisse sind nur mit Menschen gefüllt, die es zum Schließen gcc
verwenden. Ich konnte nicht herausfinden warum-D_BSD_SOURCE
wurde veraltet, nur dass es ist.
Es geschah in [glibc 2.20] (https://sourceware.org/glibc/wiki/Release/2.20#Deprecation_of__BSD_SOURCE_and__SVID_SOURCE_feature_macros). Für was es tut, die [glibc Dokumentation erklärt, was der beabsichtigte Effekt ist] (http://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html#index-_005fDEFAULT_005fSOURCE). –
Die usleep() - Funktion ist in der Header-Datei unistd.h definiert, jedoch ist sie auf der man-Seite obsolet und verwendet stattdessen nanosleep. Die Funktion nanosleep() ist in der Header-Datei definiert: time.h auch der Linkschritt. für gcc, benötigt den Parameter '-lrt' – user3629249
@ user3629249 Diese [man-Seite für librt] (http://www.unix.com/man-page/opensolaris/3lib/librt/) schlägt vor, dass die Entwicklung neuer Anwendungen nicht nötig ist gib -lrt' an, aber ja, ich bin jetzt nach nanoschlaf() gewechselt. – ryanmjacobs