首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >__USE_FILE_OFFSET64与_FILE_OFFSET_BITS=64

__USE_FILE_OFFSET64与_FILE_OFFSET_BITS=64
EN

Stack Overflow用户
提问于 2010-12-05 13:45:49
回答 2查看 15.4K关注 0票数 24

我正在尝试维护可以在许多不同系统上编译的代码。我见过十几种不同的方式来请求64位的lseek。有些系统使用lseek64,有些系统使用lseeko,有些系统要求您定义_FILE_OFFSET_BITS=64,现在我又发现了一个新系统,它要求您定义__USE_FILE_OFFSET64

这一切有什么标准吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-31 16:14:51

getconf values in IEEE Std 1003.1-2004 (以及IEEE Std 1003.1-2008中的一个较新的集合;另请参阅这些文档中的示例部分)。没有指定实际的编译器选项(甚至可能没有定义)。

然而,autoconf中的AC_SYS_LARGEFILE宏并没有尝试使用这个选项--它只针对IRIX、-D_FILE_OFFSET_BITS=64 (应该适用于大多数系统)和-D_LARGE_FILES=1 (显然适用于AIX)使用-n32。在autoconf源代码中也有对Adding Support for Arbitrary File Sizes to the Single UNIX Specification (一个较旧的规范草案,然后部分包含在POSIX.1规范中)的引用。

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

票数 15
EN

Stack Overflow用户

发布于 2014-10-06 19:54:02

features.h中,您可以看到_FILE_OFFSET_BITS__USE_FILE_OFFSET64之间的关系。

代码语言:javascript
复制
#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64
# define __USE_FILE_OFFSET64    1
#endif

因此,只有_FILE_OFFSET_BITS是为用户设计的。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4357570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档