509最小字符限制的基本原理

时间:2013-10-14 17:02:45

标签: c c89

我已经看到了很多ANSI C编译器必须支持的最低要求,比如函数的31个参数,并且大多数数字似乎都有某种意义。

但是,我看不到在源代码行中支持至少509个字符的原因。 511或512会更有意义,但509似乎是任意的。

这个号码的原因是什么?

4 个答案:

答案 0 :(得分:16)

这可能是考虑到可能的CR + LF + '\0'字符,并且每行的字符串表示仍然适合512字节的内存。

答案 1 :(得分:3)

C11 dr 5.2.4.1限制与OP给出的限制不同。我怀疑他们来自C89。

逻辑源行中的4095个字符

字符串文字中的4095个字符(连接后)


[编辑] @jwodder建议需要更完整的答案。

我能提供的最佳:512字节是软盘,磁盘和硬盘驱动器媒体最常见的扇区大小,大约在80年代中期到90年代中期,可能与@bizzehdee& @DigitalTrauma对好奇的509限制的想法。

这是一个非常受欢迎的缓冲区大小。

答案 2 :(得分:2)

直接来自this question

  

或许509旨在允许具有两个字节的512字节缓冲区   用于“\ r \ n”行终止符,一个用于“\ 0”字符串终止符。

答案 3 :(得分:0)

我没有消息来源,但我认为它是两个"个字符和构成这512个字符的\ 0字符。 我不认为2个字符用于CRLF有两个原因:这些不是你必须在那里写的默认字符,而对于LINUX它只是LF。这就是为什么我说它是两个"个字符。