Auparavant, je recevais des avertissements de gcc -std=c99
que usleep()
était implicitement déclarée. Puis je suis tombé sur this stackoverflow post, ce qui m'a conduit à utiliser -D_BSD_SOURCE
. Cependant, maintenant gcc
me dit que -D_BSD_SOURCE
a été déprécié et je devrais utiliser -D_DEFAULT_SOURCE
à la place.Que fait -D_DEFAULT_SOURCE?
#warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
Pourquoi -D_BSD_SOURCE
est-il déprécié? Pourquoi -D_DEFAULT_SOURCE
est-il utilisé à la place? Et que fait-il? J'ai fait some googling, et les résultats sont simplement remplis avec les gens qui l'utilisent pour fermer gcc
. Je ne pouvais pas savoir pourquoi-D_BSD_SOURCE
a été déprécié, juste que c'est.
Il est arrivé dans [glibc 2.20] (https://sourceware.org/glibc/wiki/Release/2.20#Deprecation_of__BSD_SOURCE_and__SVID_SOURCE_feature_macros). En ce qui concerne ce qu'elle fait, [la documentation de la glibc explique l'effet recherché] (http://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html#index-_005fDEFAULT_005fSOURCE). –
La fonction usleep() est définie dans le fichier d'en-tête: unistd.h cependant, par page de manuel, elle est obsolète, et utilise nanosleep à la place. la fonction nanosleep() est définie dans le fichier d'en-tête: time.h aussi, l'étape de liaison. pour gcc, nécessite le paramètre '-lrt' – user3629249
@ user3629249 Cette [page de manuel pour librt] (http://www.unix.com/man-page/opensolaris/3lib/librt/) suggère que 'le développement de nouvelles applications n'a pas besoin de spécifiez -lrt', mais oui je suis passé à nanosleep() maintenant. – ryanmjacobs