Identificador
Un identificador es una secuencia arbitrariamente larga de dígitos, guiones bajos, letras latinas minúsculas y mayúsculas , y caracteres Unicode especificados usando notación de escape \u y \U (desde C99). Un identificador válido debe comenzar con un carácter que no sea un dígito (letra latina, guión bajo o carácter Unicode que no sea un dígito (desde C99). Los identificadores distinguen entre mayúsculas y minúsculas (las minúsculas y las mayúsculas son distintas).
|
Se define como implementación si se permiten caracteres Unicode en bruto (no escapados) en los identificadores: char *\U0001f431 = "gato"; // soportado
char *🐱 = "gato"; // implementacion definida (ej. funciona en clang pero no en gcc)
|
(desde C99) |
Los identificadores pueden denotar los siguientes tipos de entidades:
- objetos
- funciones
- etiquetas (estructura, unión, ó enumeración)
- miembros de estructuras o uniones
- constantes de enumeración
- nombres en typedef
- nombres en labels
- nombres en macros
- nombres en parametros de macros
Cada identificador que no sea el nombre de macro o el nombre de parámetro de macro tiene un campo de aplicación, pertenece a un espacio de nombres, y puede tener vinculación. El mismo identificador puede denotar diferentes entidades en diferentes puntos del programa, o puede denotar diferentes entidades en el mismo punto si las entidades están en diferentes espacios de nombre.
Identificadores reservados
Los siguientes identificadores están reservados y no pueden ser declarados en un programa (al hacerlo, se invoca un comportamiento indefinido):
- nombres en funciónes
cerf,cerfc,cexp2,cexpm1,clog10,clog1p,clog2,clgamma,ctgammay sus variantes con sufijo -f y -l en <complex.h>- comenzando con
isótoseguido de una letra minúscula, en <ctype.h> y <wctype.h> - comenzando con
strseguido de una letra minúscula, en <stdlib.h> - comenzando con
str,memówcsseguido de una letra minúscula, en <string.h> - comenzando con
wcsseguido de una letra minúscula, en <wchar.h> - comenzando con
atomic_seguido de una letra minúscula, en <stdatomic.h> - comenzando con
cnd_,mtx_,thrd_ótss_seguido de una letra minúscula, en