You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否存在C库中SEEK_SET、SEEK_CUR、SEEK_END值不为0、1、2的情况?

关于SEEK_SET/SEEK_CUR/SEEK_END非标准取值环境的疑问

对于fseek(POSIX标准中对应lseek)的whence参数,部分调用C库的编程语言(如gfortran、Nim)默认将SEEK_SET、SEEK_CUR、SEEK_END分别映射为0、1、2。

Python的seek方法虽自行指定了SEEK_*的具体取值,但CPython内部会将0、1、2转换为C库对应的实际值。

查阅C语言标准和POSIX规范,二者都未规定SEEK_SET、SEEK_CUR、SEEK_END这几个宏的具体数值。

我想了解:在哪些操作系统和C编译器环境下,运行以下代码的输出不是012?

#include <stdio.h>

int main(){
    printf("%d%d%d\n", SEEK_SET, SEEK_CUR, SEEK_END);
}

我已在多个环境中测试,输出均为012:

  • Windows:gcc(mingw)、MSVC
  • Debian:clang、gcc
  • FreeBSD:clang
  • Solaris(SunOS5):Oracle Solaris Studio C Compiler
  • Android(Termux):clang

如果不存在这类输出非012的环境,那么为现有依赖固定值的实现添加修复措施的意义就不大了。

内容的提问来源于stack exchange,提问作者lit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 09:37:34