In precedenza stavo ricevendo avvisi da gcc -std=c99
che usleep()
è stato implicitamente dichiarato. Poi mi sono imbattuto in this stackoverflow post, che mi ha portato a utilizzare -D_BSD_SOURCE
. Tuttavia, ora gcc
mi dice che lo -D_BSD_SOURCE
è stato deprecato e dovrei usare invece -D_DEFAULT_SOURCE
.Cosa fa -D_DEFAULT_SOURCE?
#warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
Perché -D_BSD_SOURCE
è deprecato? Perché è utilizzato invece lo -D_DEFAULT_SOURCE
? E cosa fa?
Ho fatto some googling e i risultati sono solo pieni di persone che lo utilizzano per chiudere gcc
su. Non ho potuto scoprire perché-D_BSD_SOURCE
è stato deprecato, solo che lo è.
E 'successo in [glibc 2.20] (https://sourceware.org/glibc/wiki/Release/2.20#Deprecation_of__BSD_SOURCE_and__SVID_SOURCE_feature_macros). Per quanto riguarda ciò che fa, la [documentazione di glibc spiega qual è l'effetto desiderato] (http://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html#index-_005fDEFAULT_005fSOURCE). –
la funzione usleep() è definita nel file di intestazione: unistd.h tuttavia, per la pagina man, è obsoleto e utilizza invece nanosleep. la funzione nanosleep() è definita nel file di intestazione: time.h anche, la fase di collegamento. per gcc, necessita del parametro '-lrt' – user3629249
@ user3629249 Questa [man page per librt] (http://www.unix.com/man-page/opensolaris/3lib/librt/) suggerisce che 'non è necessario che lo sviluppo di nuove applicazioni specificare -lrt', ma ora mi sono spostato su nanosleep(). – ryanmjacobs