C *nix-readdir64可以在32位系统上使用吗?

C *nix-readdir64可以在32位系统上使用吗?,c,linux,unix,dirent.h,C,Linux,Unix,Dirent.h,我目前正在编写一个文件系统库,在编写库的*nix端时遇到了readdir64()。该函数的文档说明它需要一个dirent64*,并增加了对大型文件系统的支持;这是否意味着它只能在x86-64系统上工作?根据32位PC时代的老linux讨论(),readdir64可以在32位系统上使用 Ulrich Drepper(glibc主要贡献者和维护者)的回复还说,您应该使用readdir64。这篇文章是从2001年开始的:避免它……像对待瘟疫一样对待它。执行readdir()并使其正确。请不要引用我的话

我目前正在编写一个文件系统库,在编写库的*nix端时遇到了
readdir64()
。该函数的文档说明它需要一个
dirent64*
,并增加了对大型文件系统的支持;这是否意味着它只能在x86-64系统上工作?

根据32位PC时代的老linux讨论(),readdir64可以在32位系统上使用


Ulrich Drepper(glibc主要贡献者和维护者)的回复还说,您应该使用readdir64。这篇文章是从2001年开始的:

避免它……像对待瘟疫一样对待它。执行
readdir()
并使其正确。请不要引用我的话,但我认为
readdir64()
适用于需要处理大文件的32位系统,因此需要比32位整数更大的大小。如果这是正确的,那么在64位系统上就不需要
readdir64()
。但是在
dirent.h
中,对于具有
\u使用文件偏移量64
定义的系统(64位系统)
readdir()
是这样定义的
\define readdir readdir64
。因此,它是64位系统上的默认值;就像我说的,不要引用我的话。这取决于向后兼容性等不同的系统规则。这是一个奇怪的东西。@CoffeeandCode AFAIR
\uuu使用\u文件\u偏移64
应该由程序员设置,如果他们需要“大文件支持”。最好的做法似乎是始终使用
readdir()
,并定义正确的符号来执行所需操作。对不起,括号的意思是读取“(和64位系统)”,因为在头文件中有一个
#ifdef“32位定义”
#elif"使用文件偏移64
#else
将readdir定义为除32位变量外的所有变量的readdir64