我已经看到了 ANSI C 编译器必须支持的许多最低要求,例如函数的 31 个参数,而且大多数数字似乎都具有某种意义。
但是,我看不出在源代码行中支持至少 509 个字符的原因。511 或 512 会更有意义,但 509 似乎有点随意。
这个数字的原因是什么?
This perhaps is to take account of possible CR
+ LF
+ '\0'
characters and have a string representation of each line still fit into 512 bytes of memory.
C11 dr 5.2.4.1 限制与 OP 给出的不同。我怀疑他们来自C89。
逻辑源代码行中有 4095 个字符
字符串文字中的 4095 个字符(连接后)
[编辑] @jwodder 建议需要更完整的答案。
我能提供的最好的:512 字节是大约 80 年代中期到 90 年代中期软盘、软盘和硬盘驱动器媒体最常见的扇区大小,并且可能与 @bizzehdee 和 @DigitalTrauma 对奇怪的 509 限制的想法一起做出贡献。
这是一个非常流行的缓冲区大小。
直接从这个问题
也许 509 旨在允许一个 512 字节的缓冲区,其中两个字节用于“\r\n”行终止符,一个用于“\0”字符串终止符。
我没有来源,但我认为是这两个"
字符和 \0 字符组成了这 512 个字符。我不认为这 2 个字符用于 CRLF,原因有两个:这些不是您必须在此处编写的默认字符,而对于 LINUX,它只是 LF。这就是为什么我说它是两个"
字符。