4

私はいくつかの GNU 拡張機能を使用しており、gnu99 を C 標準として使用するように設定すると、#define _GNU_SOURCE を省略できることに気付きました。gnu99 は _GNU_SOURCE を暗示していますか、それとも問題を回避するためにそれを使用する方が安全ですか、それとも必須ですか?

4

1 に答える 1

2

言語機能とライブラリ機能は区別する必要があります。-std=gnu99 は GNU 言語機能を有効にし、_GNU_SOURCE は GNU ライブラリ機能を有効にします。

ライブラリ機能を使用する場合は、_GNU_SOURCE を定義することをお勧めします。これにより、コードの読者にとって明確になります。また、これにより、GCC を提供するが glibc を提供しないプラットフォームでコードをコンパイルしている (そうでない) 場合、物事がより明白になる可能性があります。

于 2013-09-07T19:24:41.473 に答える