SEEK_SET SEEK_CUR SEEK_END 在任何 C 库上都不是 0,1,2 吗?

问题描述 投票:0回答:1

对于

whence
(或 POSIX 中的
fseek
)的
lseek
参数,一些调用 C lib 的语言假定 SEEK_SET、SEEK_CUR SEEK_END 分别为 0、1、2,例如 gfortranNim [^ py].

[^py]:虽然Python的seek专门集中`SEEK_*的值,但CPython确实将0,1,2映射到C lib的内部值。

我查过 C 和 POSIX 专业化,两者都没有专注于

SEEK_*
的值。

在代码中,我想知道在哪个操作系统和C编译器中,以下代码的输出不是

012

#include <stdio.h>

int main(){
    printf("%d%d%d\n", SEEK_SET, SEEK_CUR, SEEK_END);
}
c io specifications fseek lseek
1个回答
0
投票

如果您必须在调用

fseek()
时使用0、1、2,请使用该数字作为数组索引。
我怀疑是否存在“必须”这样做的真实案例。 #include <stdio.h> const int whence [] = { SEEK_SET, SEEK_CUR, SEEK_END }; int result = fseek(stream, 0, whence[2]); // Go to the end

	
© www.soinside.com 2019 - 2024. All rights reserved.