Longitud máxima del identificador

¿Dónde puedo encontrar cuál es la longitud máxima del identificador en C?

¿En qué archivo de cabecera se especifica ese límite?

No hay ningún archivo de encabezado que contenga el límite de longitud del identificador; Incluso si los hubiera, ¿cómo podría ayudarte? De todos modos, no puede cambiar la longitud de su identificador en el momento de la comstackción en función de un valor en un archivo de encabezado.

El estándar C , sección 5.2.4.1 dice:

  • 63 caracteres iniciales significativos en un identificador interno o un nombre de macro (cada nombre de carácter universal o carácter de fuente extendida se considera un solo carácter)
  • 31 caracteres iniciales significativos en un identificador externo (cada nombre de carácter universal que especifica un identificador corto de 0000FFFF o menos se considera 6 caracteres, cada nombre de carácter universal que especifica un identificador corto de 00010000 o más se considera de 10 caracteres, y se considera cada carácter fuente extendido el mismo número de caracteres que el nombre del carácter universal correspondiente, si corresponde)

También contiene una nota a pie de página:

Las implementaciones deben evitar imponer límites de traducción fijos siempre que sea posible.

Por lo tanto, debe verificar su documentación para ver si su comstackdor admite una mayor cantidad de caracteres significativos en los identificadores.

No hay encabezado que te lo diga. Debe tomar una decisión informada basada en las plataformas a las que es probable que se esté transfiriendo. Carl Norum señaló lo que dice el estándar C99.

Una vez, solo podía confiar en 6 caracteres únicos, mono-caso, para variables externas, porque eso era lo que proporcionaban algunos entornos de mainframe. (Esto es lo que dice el estándar C89, pero observó que la limitación era dolorosa).

En estos días, en parte debido al enlace de tipo seguro en C ++, puede confiar razonablemente en nombres mucho más largos para símbolos externos. Si comienza a derivar por encima de los 31 caracteres, es posible que tenga problemas, pero también tiene problemas de legibilidad.

En resumen, no existe un archivo de encabezado que le diga que es parte de las especificaciones de la norma ANSI / ISO C que definen el diseño de la syntax y el mecanismo del entorno para el lenguaje C en sí. En los estándares anteriores a C89, la longitud máxima del identificador era 6, debido a las pequeñas huellas de memoria y el entorno en sistemas tales como mainframes y sistemas * nix.

Hoy en día, el último estándar es el estándar C99, que establece que la longitud máxima de un identificador es 32, la razón es bastante simple y lógica … el comstackdor funciona analizando el flujo de entrada que se pasaría como un argumento de línea de comando. Makefile, o una solución (para entornos de Microsoft Visual Studio), el analizador es rígido y fijo y, por lo tanto, impone restricciones en la longitud del identificador para que el analizador pueda mirar hacia adelante y ver si hay más caracteres. Es por esa razón.

Otra razón es que la mayoría de los comstackdores de C ++ utilizan la manipulación de nombres en los identificadores que, como señaló Jonathan Leffler, podrían confundir al comstackdor y también a la vinculación del código.