2010-02-28 56 views
8

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

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

+0

¿Por qué le gustaría usar identificadores tan largos que esto importa? – Tronic

+3

@Tronic, en C89 tiene un límite de 6 caracteres significativos para identificadores externos. –

Respuesta

21

No hay un archivo de encabezado que contenga el límite de longitud del identificador; incluso si hubiera, ¿cómo podría ayudarte? No puede cambiar la longitud de su identificador en tiempo de compilación en función de un valor en un archivo de encabezado de todos modos.

El C standard, sección 5.2.4.1 dice:

  • 63 caracteres iniciales significativas en un identificador interno o un nombre de macro (cada nombre de carácter universal o carácter 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 10 caracteres, y cada carácter de fuente extendida es considerado rojo el mismo número de caracteres que el correspondiente nombre de carácter universal, en su caso)

También contiene una nota al pie:

implementaciones deberían evitar la imposición de límites fijos de traducción siempre que sea posible.

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

+0

¿En qué archivo de encabezado se especifica ese límite? – Devel

+0

No está en un archivo de encabezado, está en la documentación de su compilador. Los identificadores desaparecen en el tiempo de ejecución. –

+0

@Devel, no existe tal cosa. Incluso si hubiera, ¿cómo te ayudaría? No puede cambiar las longitudes de sus identificadores según un archivo de encabezado, ¿verdad? –

8

No hay un encabezado que lo indique. Debe tomar una decisión informada en función de las plataformas a las que probablemente se traslade. Carl Norum señaló lo que dice el estándar C99.

Érase una vez, solo podía confiar en 6 caracteres únicos, monocase, para variables externas, porque eso era lo que proporcionaban algunos entornos de mainframe. (Esto es lo que dijo el estándar C89, pero señaló que la limitación era dolorosa).

En la actualidad, en parte debido a la vinculación de tipo seguro en C++, puede confiar razonablemente en nombres mucho más largos para símbolos externos. Si comienzas a desplazarte por encima de los 31 caracteres, es posible que tengas problemas, pero también te encuentras con problemas de legibilidad.

+0

+1 para C89 con solo 6 caracteres para identificadores externos. –

3

En resumen, no existe ningún archivo de cabecera que indique que, eso es parte de una especificación ANSI/ISO C Standard que define el diseño de la sintaxis y el mecanismo de entorno para el lenguaje C en sí. En los estándares pre C89, la longitud máxima del identificador era 6, debido a las pequeñas huellas de memoria y al entorno en sistemas tales como Mainframes y sistemas * nix.

Hoy en día, el último estándar son los estándares C99 que determinan que la longitud máxima para un identificador es 32, el motivo es bastante simple y lógico ... el compilador trabaja analizando el flujo de entrada que se pasaría como un argumento de línea de comando, archivo MAKE o una solución (para entornos de Microsoft Visual Studio), el analizador es rígido y fijo y, por lo tanto, las restricciones impuestas sobre la longitud del identificador para que el analizador pueda mirar hacia adelante y ver si hay más caracteres. Es por esa razón para eso.

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

Espero que esto ayude, Saludos cordiales, Tom.

Cuestiones relacionadas