Especificadores de clases de almacenamiento estático
Los especificadores estáticos de clase de almacenamiento, static y extern, se pueden aplicar a objetos y funciones. En la tabla siguiente se muestra dónde se pueden y no se pueden utilizar las palabras clave static y extern.
Uso de static y extern
Construcción |
¿Puede usarse static? |
¿Puede usarse static? |
---|---|---|
Declaraciones de función dentro de un bloque |
No |
Sí |
Argumentos formales a una función |
No |
No |
Objetos en un bloque |
Sí |
Sí |
Objetos fuera de un bloque |
Sí |
Sí |
Funciones |
Sí |
Sí |
Funciones de miembro de clase |
Sí |
No |
Datos de miembro de clase |
Sí |
No |
Nombres typedef |
No |
No |
Un nombre especificado mediante la palabra clave static tiene vinculación interna, a excepción de los miembros estáticos de una clase que tengan vinculación externa. Es decir, no está visible fuera de la unidad de traducción actual. Un nombre especificado mediante la palabra clave extern tiene vinculación externa a menos que ya se haya definido con vinculación interna. Para obtener más información sobre la visibilidad de nombres, vea Ámbito y Programa y vinculación.
Nota
Las funciones que se declaran como inline y que no son funciones de miembro de clase tiene las mismas características de vinculación que las funciones declaradas como static.
Un nombre de clase cuya declaración aún no haya sido encontrada por el compilador se puede usar en una declaración extern. El nombre introducido con este tipo de declaración no se puede utilizar hasta que se haya encontrado la declaración de clase.