tener - Razón para un límite de caracteres mínimo de 509
tamaño metadescription (4)
He visto muchos de los requisitos mínimos que un compilador ANSI C debe admitir como 31 argumentos para una función, y la mayoría de los números parecen tener algún tipo de sentido.
Sin embargo, no puedo ver el motivo para admitir al menos 509 caracteres en una línea de origen. 511 o 512 tendrían más sentido, pero 509 parece un poco arbitrario.
¿Cuál es la razón de este número?
Los límites de C11 dr 5.2.4.1 son diferentes a los dados por el OP. Sospecho que vienen de C89.
4095 caracteres en una línea fuente lógica
4095 caracteres en una cadena literal (después de la concatenación)
[Editar] @jwodder sugirió que se necesitaba una respuesta más completa.
Lo mejor que puedo proporcionar: 512 bytes fue el tamaño de sector más común para los disquetes, discos y discos duros de alrededor de 80 a mediados de los 90 y probablemente contribuyó, junto con los pensamientos @bizzehdee y @DigitalTrauma en cuanto al curioso límite de 509.
Era un tamaño de búfer muy popular.
No tengo ninguna fuente, pero pensé que son los dos "
caracteres y el carácter / 0 que conforman estos 512 caracteres. No creo que los 2 caracteres sean para CRLF por 2 razones: estos no son caracteres predeterminados que debe escribir allí , y para LINUX solo es LF. Por eso digo que son los dos "
personajes "
.
directamente de esta pregunta
Tal vez se pretende que 509 permita un búfer de 512 bytes con dos bytes para un terminador de línea "/ r / n" y uno para un terminador de cadena ''/ 0''.
Esto quizás es para tener en cuenta los posibles caracteres CR
+ LF
+ ''/0''
y tener una representación de cadena de cada línea que aún se ajuste a 512 bytes de memoria.