Espacios de nombres

El compilador coloque “espacios de nombres” para distinguir entre los identificadores utilizados para los diferentes tipos de elementos.Los nombres de cada espacio de nombres deben ser únicos evitar conflictos, pero un nombre idéntico puede aparecer en más de un espacio de nombres.Esto significa que puede utilizar el mismo identificador de elementos dos o más diferentes, siempre que los elementos están en espacios de nombre diferente.El compilador puede resolver las referencias en función del contexto sintáctico del identificador en el programa.

[!NOTA]

No confunda la noción limitada de C de un espacio de nombres con la característica de “espacio de nombres” de C++.Vea espacios de nombres enla referencia dellenguaje C++ para obtener más información.

Esta lista se describen los espacios de nombres utilizados en C.

  • Etiquetas de instrucciones
    Las etiquetas de instrucciones denominadas son parte de instrucciones.Las definiciones de las etiquetas de instrucciones van seguidas de un signo de dos puntos pero no siempre son parte de las etiquetas de mayúsculas/minúsculas .Utiliza de etiquetas de instrucciones siempre siguen inmediatamente a la palabra clave goto.Las etiquetas de instrucciones no tienen que ser distintas de otros nombres o de etiqueta en otras funciones.

  • Estructura, unión, y etiquetas de enumeración
    Estas etiquetas forman parte de la estructura, unión, y los especificadores del tipo de enumeración y, si está presente, siempre inmediatamente sigue las palabras reservadas struct, union, o enum.Los nombres de etiqueta deben ser distintos del resto de estructura, de enumeración, o de etiquetas de la combinación con la misma visibilidad.

  • miembros de estructuras o de uniones
    Los nombres de miembro se asignan en los espacios de nombres asociado a cada tipo de estructura y unión.Es decir, el mismo identificador puede ser un nombre de componente en cualquier número de estructuras o de uniones al mismo tiempo.Las definiciones de nombres componentes siempre aparecen dentro de la estructura o unión escribe especificadores.Utiliza de nombres componentes siempre siguen inmediatamente a los operadores miembro-selección (– > y .).El nombre de miembro debe ser único dentro de la estructura o unión, pero no tiene que ser distinto de otros nombres en el programa, incluidos los nombres de los miembros de diversas estructuras y uniones, o el nombre de la propia estructura.

  • Identificadores normales
    El resto de los nombres se dividen en un espacio de nombres que incluye las variables, funciones (parámetros formales incluidas y las variables locales), y constantes de enumeración.Los nombres de identificador han anidados visibilidad, por lo que puede volver a definir dentro de los bloques.

  • nombres de Typedef
    Los nombres de definiciones de tipos no se pueden utilizar como identificadores en el mismo ámbito.

Por ejemplo, dado que las etiquetas de la estructura, los miembros de la estructura, y los nombres de variable están en tres espacios de nombre diferente, los tres elementos denominados student en este ejemplo no están en conflicto.el contexto de cada elemento permite la interpretación correcta de cada aparición de student en el programa.(Para obtener información sobre las estructuras, vea Declaraciones de estructura.)

struct student {
   char student[20];
   int class;
   int id;
   } student;

cuando student aparece después de la palabra clave de struct , el compilador la reconoce como etiqueta de la estructura.Cuando student aparece después de un operador miembro-selección (– > o .), el nombre hace referencia al miembro de estructura.En otros contextos, student hace referencia a la variable de estructura.Sin embargo, sobrecargar el espacio de nombres de etiqueta no se recomienda porque ocultan el significado.

Vea también

Conceptos

Estructura del programa