【发布时间】:2018-07-12 23:30:33
【问题描述】:
POSIX 将EOF 定义为扩展为负值的宏:
标题应定义以下宏,该宏应扩展为具有 int 类型和负值的整数常量表达式:
EOF
文件结束返回值。
在我能找到的每个实现中,EOF总是定义为-1。
虽然标准确实允许不同的值,但我找不到发生这种情况的任何具体实现,我想找到一个用于测试目的。1
1我可以自己实现,但我的真正目的是“在野外找到它”,由于无法证明它不存在,所以它是次优的我能想到的。
An almost identical question has already been asked,但是最后问了两个问题,接受的答案只回答了第二个问题(关于WEOF)。另一个用户对第一个问题的回答是否定的,但由于该问题仅限于常见的 C 环境,因此否定是可以说是正确的:-1 很可能用于任何合理的实现小字符型。
由于我的问题是关于存在,实际回答它的唯一方法是提供一个示例,所以我将重新表述它:请提供一个现有实现的示例,其中@987654327 @。无论是 newlib 或 musl、PDP 或 VAX、Plan 9 或 Hurd,libc/硬件/操作系统与 POSIX 兼容或 ISO C 兼容 libc 的任何组合都是有效的。
【问题讨论】:
-
假设它是
-1并继续进行更有趣的挑战 -
@bolov 假设它是
-1并继续进行更有趣的挑战 我会说“只需使用EOF并继续...”跨度> -
只是不要包含您自己编写的个人库,这些库只是为了回答这个问题而编写的。 为什么这比偶然发现一个实现更有效other 人刚刚在互联网上发帖?无论哪种方式,这都是人为的情况。
-
请注意,EOF 不是由 POSIX 定义的,而是由 C 标准定义的。即使在不符合 POSIX 的系统上(想想 MS/DOS 和 Windows),它也应该存在并具有负值。
-
OP:只是好奇,这次努力的目标是什么? IE。如果您找到 EOF != -1 的实现,这对您有什么不同?
标签: c posix language-lawyer eof