web-dev-qa-db-ja.com

-_DEFAULT_SOURCEの機能

以前は、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_が廃止されたのかわかりませんでした。

24
ryanmjacobs

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
4
Paul Vixie