Обоснование минимального ограничения на 509 символов - программирование
Подтвердить что ты не робот

Обоснование минимального ограничения на 509 символов

Я видел много минимальных требований, которые компилятор ANSI C должен поддерживать как 31 аргумент функции, и большинство чисел, похоже, имеют какой-то смысл.

Однако я не вижу аргументов в пользу поддержки не менее 509 символов в исходной строке. 511 или 512 имеет смысл, но 509 кажется произвольным.

В чем причина этого числа?

4b9b3361

Ответ 1

Возможно, необходимо учитывать возможные символы CR + LF + '\0' и иметь строковое представление каждой строки, все еще помещенной в 512 байт памяти.

Ответ 2

Пределы C11 dr 5.2.4.1 отличаются от пределов OP. Я подозреваю, что они пришли из C89.

4095 символов в логической строке источника

4095 символов в строковом литерале (после конкатенации)


[Изменить] @jwodder предложил более полный ответ.

Лучше всего я могу предоставить: 512 байтов были наиболее распространенным размером сектора для дискет, дискет и носителей на жестком диске примерно в середине 80-х до середины 90-х годов и, вероятно, способствовали, а также мысли @bizzehdee и @DigitalTrauma относительно любопытного лимита 509.

Это был очень популярный размер буфера.

Ответ 3

прямо из этот вопрос

Возможно, 509 предназначен для обеспечения 512-байтового буфера с двумя байтами для терминатора строки "\ r\n", а для терминатора строк "\ 0" -

Ответ 4

У меня нет источника, но я думал, что это два символа " и символ \0, которые составляют эти 512 символов. Я не думаю, что 2 символа для CRLF по двум причинам: это не символы по умолчанию, которые вы должны там написать, а для LINUX это только LF. Вот почему я говорю это два символа ".