以前は、usleep()
が暗黙的に宣言されているという警告を_gcc -std=c99
_から受け取っていました。それから私は偶然に出会った this stackoverflow post が原因で、_-D_BSD_SOURCE
_を使用するようになりました。ただし、現在gcc
は_-D_BSD_SOURCE
_が廃止されていることを示しているので、代わりに_-D_DEFAULT_SOURCE
_を使用する必要があります。
_#warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
_
_-D_BSD_SOURCE
_が推奨されないのはなぜですか?代わりに_-D_DEFAULT_SOURCE
_が代わりに使用されるのはなぜですか?そしてそれは何をしますか?
私は some googling を行い、結果はgcc
をシャットダウンするためにそれを使用している人々で満たされています。 なぜ_-D_BSD_SOURCE
_が廃止されたのかわかりませんでした。
linuxやglibcを超えた移植性が必要です。#ifdefは嫌いです。そう:
/* asprintf() does not appear on linux without this */
#define _GNU_SOURCE
/* gettimeofday() does not appear on linux without this. */
#define _BSD_SOURCE
/* modern glibc will complain about the above if it doesn't see this. */
#define _DEFAULT_SOURCE