之前用C语言写了一个小工具,对数据进行剪辑、skip等操作,使用过程中一直没出现问题。今天使用这个工具对一个大于2G的文件进行操作却出问题了。首先执行程序会报错,''open failed”,经查证发现原来是我使用编译器是32位的,最大只能对2G的文件进行操作;解决办法:编译时加上-D_FILE_OFFSET_BITS=64 -D_LARGE_FILE,再执行时不会出现此错误,问题解决。当我们对大文件进行操作时,除了要添加上面的宏定义还需要注意使用的变量类型。int型变量的取值范围为 -2147483648~2147483647(32位操作系统),对大文件操作时,文件的偏移很容易就超出此范围。在写代码时需要注意此处变量的定义。