10

私はプロジェクトに取り組んでおり、コードにはマクロ定義が含まれています:

#define __USE_MISC

コードはそれを使用していないので、他の目的があると思います。

4

2 に答える 2

13

__USE_MISC は、次/usr/include/features.hの条件で定義されています。

#if defined _BSD_SOURCE || defined _SVID_SOURCE
# define __USE_MISC     1
#endif

__USE_MISC --> BSD と System V Unix に共通するものを定義します。

_BSD_SOURCEしたがって、コードは、との両方が定義されていない場合でも、常に定義されていることを確認したいようです( _SVID_SOURCEglibc 2.20 以降では、 enable を定義しています)。_DEFAULT_SOURCE__USE_MISC

詳細については、機能テスト マクロを参照してください。

于 2012-04-19T16:02:18.070 に答える
5

__USE_MISC実装のヘッダーが「機能テスト マクロ」を処理する方法の内部詳細です。このマクロは、ビルドで使用できる標準関数のセットをコンパイラに指示します。Thiruvalluvar の回答が示すように、ビルドで_BSD_SOURCEまたは構成が必要な 場合は、ライブラリ ヘッダーによって (内部使用のために) セットアップされ_SVID_SOURCEます。

コード/ビルドでそのマクロを直接処理しないでください。代わりに、文書化された機能テスト マクロを使用する必要があります。glibc のドキュメントはここにあります: http://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html

于 2012-04-19T19:05:30.307 に答える