首页 > 解决方案 > _FILE_OFFSET_SIZE 是否在事先包含 stdio.h 后工作?

问题描述

我想使用fseeko,所以有这个:

#define _FILE_OFFSET_BITS 64
#include <stdio.h>

由于源代码适用于各种平台和体系结构,因此每个平台和体系结构都有许多周围的预处理器开关,因此不建议在使用时复制到源文件中。但是,如果将其放入标题中,我担心这将需要首先包含该标题,这可能难以执行。

测试是否定义了 stdio.h 宏可能会起作用,例如SEEK_CUR,但这以它自己的方式很难看,因为没有标准的、不言自明的STDIO_INCLUDED宏可供测试。

一些标头允许使用不同的开关进行多次包含,例如assert.hNDEBUG。我想知道根据 POSIX 标准_FILE_OFFSET_BITS和其他类似开关是否也是这种情况。

标签: cposix

解决方案


啊。为什么我的阅读能力在公开提问后立即得到提升。从fseeko页面,强调我的:

在某些体系结构上,off_t 和 long 都是 32 位类型,但是将 _FILE_OFFSET_BITS 的值定义为 64 (在包含任何头文件之前)会将 off_t 转换为 64 位类型。

答案是不。


推荐阅读