__USE_FILE_OFFSET64 与 _FILE_OFFSET_BITS=64

2023-12-24

我正在尝试维护在许多不同系统上编译的代码。我见过十几种不同的请求方式lseek这需要 64 位。一些系统使用lseek64, 一些使用lseeko,有些要求您定义_FILE_OFFSET_BITS=64,现在我刚刚找到了一个新的,需要你定义__USE_FILE_OFFSET64.

这一切有什么标准吗?


IEEE Std 1003.1-2004 中的 getconf 值 http://pubs.opengroup.org/onlinepubs/009695399/utilities/c99.html#tag_04_12_13_03(以及较新的设置IEEE 标准 1003.1-2008 http://pubs.opengroup.org/onlinepubs/9699919799/utilities/c99.html#tag_20_11_13_03;另请参阅这些文档中的示例部分)。未指定实际的编译器选项(甚至可能没有定义)。

但是,那AC_SYS_LARGEFILEautoconf 中的宏不会尝试使用它——它只是尝试-n32对于IRIX,-D_FILE_OFFSET_BITS=64(这应该适用于大多数系统)和-D_LARGE_FILES=1(显然适用于 AIX)。还有一个参考在单一 UNIX 规范中添加对任意文件大小的支持 http://www.unix-systems.org/version2/whatsnew/lfs20mar.html(一个较旧的规范草案,后来部分包含在 POSIX.1 规范中)在 autoconf 源中。

至于定义__USE_FILE_OFFSET64手动,不确定这是否真的是正确的解决方案 - 双下划线宏是为系统标头保留的,并且很可能存在一些依赖于其他定义的条件定义。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

__USE_FILE_OFFSET64 与 _FILE_OFFSET_BITS=64 的相关文章