EOF的实际实现不同于-1

时间:2018-02-02 12:50:30

标签: c posix language-lawyer eof

POSIXEOF定义为扩展为负值的宏:

  

标题应定义以下宏,该宏将扩展为类型为 int 的整数常量表达式和负值:

     

EOF

     

文件结束返回值。

我发现的每个实现中,EOF 始终定义为-1

虽然标准确实允许不同的值,但我找不到任何特定的实现,我想找到一个用于测试目的。 1

1 我可以自己实施,但我的真正目的是“在野外找到它”,由于不可能证明它缺席,它是次佳的我能想到的事情。

An almost identical question has already been asked但是最后提出了两个问题,接受的答案只回答了第二个问题(大约WEOF)。另一个用户回答第一个问题是否定的,但由于问题仅限于常见的C环境,否则可以说是正确的: -1可能会用于任何合理的实现小char类型

由于我的问题是关于存在,实际回答它的唯一方法是提供一个示例,所以我将其改写:请提供一个现有实现的示例,其中{{ 1}} 即可。无论是newlib还是musl,PDP或VAX,Plan 9或Hurd,libc /硬件/操作系统与POSIX兼容或ISO C兼容的libc的任何组合都是有效的。

1 个答案:

答案 0 :(得分:4)

懒惰星期天,所以我发现此https://github.com/xinu-os/xinu附带此https://github.com/xinu-os/xinu/blob/master/include/stddef.h列表

#define EOF (-2) /**< End-of-file (usually from read)    */

: - )

可追溯到1987年的Xinu消息来源:https://www.tuhs.org//cgi-bin/utree.pl?file=Xinu7遗憾的是-1似乎正在使用EOF作为;的值。 : - (