8

tmp.c の場合:

#include <sys/stat.h>
#include <errno.h>
#include <stdio.h>

int main(int argc, const char *argv[])
{
    struct stat st;
    if (stat(argv[1], &st) != 0)
    {
        perror("Error calling stat");
    }

    return 0;
}

Error calling stat: Value too large for defined data type大きなファイル(〜2.5 Gb)でプログラムを実行すると、 が表示されます。

4

4 に答える 4

10

#define _FILE_OFFSET_BITS 64前に追加するか 、プラットフォーム固有の方法で定義する必要が#include <sys/stat.h>あります。たとえば、gcc の場合は -D オプションを参照してください。Visual Studio の場合、プロジェクト プロパティ -> 構成プロパティ -> C/C++ -> プリプロセッサ -> プリプロセッサ定義に移動します。

于 2012-12-15T15:40:14.407 に答える
3

他の人がこの問題を抱えていて、_FILE_OFFSET_BITS 64#include "sys/stat.h"にまだ解決していない場合は、他のすべてのインクルードの前に移動してください。これに依存しているヘッダーもわかりませんでしたが、問題は解決しました。

于 2013-02-02T19:07:35.767 に答える
1

このリンクをご覧ください。このような問題を処理する方法を提供します。

これは通常、 -D_FILE_OFFSET_BITS=64 などを定義することによって行われます。これはシステムに依存します。一度完了し、この新しいモードに切り替えると、ほとんどのプログラムは大きなファイルを問題なくサポートします。

于 2012-12-15T15:52:14.947 に答える
0

プログラムにヘッダー ファイルconfig.hを含めることで、この制限を取り除くことができます。これはファイル全体を含める必要はありませんが、1 つのマクロ #define _FILE_OFFSET_BITS 64 を配置して制限を解除することもできます。

于 2012-12-15T15:54:58.090 に答える