c - _FILE_OFFSET_SIZE 是否在事先包含 stdio.h 后工作?
问题描述
我想使用fseeko
,所以有这个:
#define _FILE_OFFSET_BITS 64
#include <stdio.h>
由于源代码适用于各种平台和体系结构,因此每个平台和体系结构都有许多周围的预处理器开关,因此不建议在使用时复制到源文件中。但是,如果将其放入标题中,我担心这将需要首先包含该标题,这可能难以执行。
测试是否定义了 stdio.h 宏可能会起作用,例如SEEK_CUR
,但这以它自己的方式很难看,因为没有标准的、不言自明的STDIO_INCLUDED
宏可供测试。
一些标头允许使用不同的开关进行多次包含,例如assert.h
和NDEBUG
。我想知道根据 POSIX 标准_FILE_OFFSET_BITS
和其他类似开关是否也是这种情况。
解决方案
啊。为什么我的阅读能力在公开提问后立即得到提升。从fseeko
页面,强调我的:
在某些体系结构上,off_t 和 long 都是 32 位类型,但是将 _FILE_OFFSET_BITS 的值定义为 64 (在包含任何头文件之前)会将 off_t 转换为 64 位类型。
答案是不。
推荐阅读
- c# - 我可以为应用程序调试创建临时代理互联网连接吗?
- java - 类中的字段初始化顺序
- javascript - for 循环返回未定义
- javascript - 为什么我在 IE11 中收到“SCRIPT5021:字符集中的无效范围”和空白屏幕?
- css - 在上方列表中添加字段后,css按钮正在移动
- javascript - 如何显示此 json 数组中的所有“名称”值
- html - 为什么 BootStrap Card 组件会拉伸容器大小?
- css - 在 LESS 循环中生成 CSS 内容的值
- checksum - 将校验和文件添加到我的 macOS 公证应用程序包
- cmake - wasm-ld:错误:初始内存太小,需要 18317952 字节