17

-D_FILE_OFFSET_BITS=64原因が64ビットであることを理解していoff_tます。-D_LARGEFILE_SOURCEでは、まだ行われていないことは何-D_FILE_OFFSET_BITS=64ですか? これらの定義は正確には何をしますか?

4

2 に答える 2

10

GLIBC機能テストマクロのドキュメントには次のように記載されています。

_LARGEFILE_SOURCE
このマクロが定義されている場合、以前のすべての標準のいくつかの欠点を修正するいくつかの追加機能が利用可能です。具体的には、関数fseekoおよびftelloが使用可能です。これらの機能がないと、ISO Cインターフェース(fseek、ftell)と低レベルのPOSIXインターフェース(lseek)の違いが問題につながります。

このマクロは、ラージファイルサポート拡張機能(LFS)の一部として導入されました。

そのため、マクロは具体的に作成fseekoされ、利用可能になりftelloます。_FILE_OFFSET_BITS設定だけでは、これらの機能を使用できません。

(GCCのデフォルトであるCのGNU方言を使用している場合は、明示的に定義する必要がない場合があることに注意してください。たとえば_LARGEFILE_SOURCE、使用する場合は定義-std=c99します。)

于 2013-01-06T16:25:37.510 に答える