2

でファイルにアクセスするコードをコンパイルするいくつかの C プロジェクトに気付きました_FILE_OFFSET_BITS=64。現在、私のシステム (64 ビット) では、これを追加または削除してもあまり効果がないように見えますが、おそらく他のシステムでは効果があります。

_FILE_OFFSET_BITS=64いつ(または他の値を)使用する必要がありますか?または、代わりに、実際に必要ないことを確認するために何を確認する必要がありますか?

4

2 に答える 2

0

Autoconf は、このためのマクロを提供します: AC_SYS_LARGEFILE. off_t構成時に、デフォルトですでに 64 ビット タイプであるかどうか_FILE_OFFSET_BITSを検出することによって、必要なオプションを追加します64_LARGE_FILESまた、特定の非GNUシステム(コメントによると「AIXスタイルのホスト」)で使用される別のプリプロセッサマクロ、同じ方法も検出します。

autoconf を使用している場合は、このマクロを直接使用できます。使用していない場合は、この同じロジックを再実装できます。

これらのマクロは、実装で使用するために予約された名前空間にあるため、GNU のようにマクロを使用しないシステムでは設定しない方がよいでしょう。他のシステムに予期しない影響を与える可能性があります。これらのマクロが定義されているときに意図的に壊れる悪意のある実装は存在しないと思いますが、一部の実装、おそらく将来の実装では、偶然にも、微妙に異なる目的で同じ名前のマクロを合法的に使用する可能性があります。

于 2018-01-06T13:28:30.083 に答える