Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
私はいくつかの GNU 拡張機能を使用しており、gnu99 を C 標準として使用するように設定すると、#define _GNU_SOURCE を省略できることに気付きました。gnu99 は _GNU_SOURCE を暗示していますか、それとも問題を回避するためにそれを使用する方が安全ですか、それとも必須ですか?
言語機能とライブラリ機能は区別する必要があります。-std=gnu99 は GNU 言語機能を有効にし、_GNU_SOURCE は GNU ライブラリ機能を有効にします。
ライブラリ機能を使用する場合は、_GNU_SOURCE を定義することをお勧めします。これにより、コードの読者にとって明確になります。また、これにより、GCC を提供するが glibc を提供しないプラットフォームでコードをコンパイルしている (そうでない) 場合、物事がより明白になる可能性があります。