Clase de almacenamiento

El especificador de clase de almacenamiento en una definición de función proporciona la función extern o clase de almacenamiento de Estática .

Sintaxis

  • definición de función:
    instrucciónoptcompuesta atributo-seqoptde la declaración-lista de declaradoresoptde los declaración-especificadores

    /* atributo-seq es Microsoft Específico *

  • declaración-especificadores:
    declaración-especificadores de almacenamiento-clase-especificador opt

    declaración-especificadores de especificador de tipo opt

    declaración-especificadores calificador de tipo opt

  • almacenamiento-clase-especificador: /* Para las definiciones de función *
    extern

    static

Si una definición de función no incluye un almacenamiento-clase-especificador, los valores predeterminados de la clase de almacenamiento a extern.Puede declarar explícitamente una función como extern, pero no se requiere.

Si la declaración de una función contiene *el almacenamiento-clase-especificador *extern, el identificador tiene el mismo enlace que cualquier declaración visible del identificador con ámbito del archivo.Si no hay declaración visible con ámbito del archivo, el identificador tiene una vinculación externa.Si un identificador tiene ámbito de archivo y ningún almacenamiento-clase-especificador, el identificador tiene una vinculación externa.Vinculación externa significa que cada instancia del identificador del mismo objeto o función.Vea duración, ámbito, Visibility, y Linkage para obtener más información sobre el ámbito de vinculación y archivo.

las declaraciones de función de Bloque-ámbito con un especificador de clase de almacenamiento distinta de extern generan errores.

Una función con la clase de almacenamiento de Estática sólo es visible en el archivo de código fuente en el cual se define.Todos los demás funciona, si se les proporciona la clase de almacenamiento de extern explícita o implícitamente, está visible en todos los archivos de código fuente del programa.Si se desea que la clase de almacenamiento de Estática , debe declararse de la primera aparición de una declaración (si existe) de la función y, en la definición de la función.

Específicos de Microsoft

Con las extensiones de Microsoft habilitadas, una función declarada originalmente sin una clase de almacenamiento (o con la clase de almacenamiento de extern ) tiene la clase de almacenamiento de Estática si la definición de función está en el mismo archivo de código fuente y si la definición especifica explícitamente la clase de almacenamiento de Estática .

Al compilar con la opción del compilador /Ze, las funciones declaradas dentro de un bloque mediante la palabra clave de extern tienen visibilidad global.Esto no es true al compilar con /Za.Esta característica no debe ser de confianza sobre si la portabilidad de código fuente es una consideración.

Específico de Microsoft de FINAL

Vea también

Referencia

Definiciones de funciones de C