Especificadores de classe de armazenamento estático
Os especificadores de estática de classe de armazenamento, estático e extern, podem ser aplicados a objetos e funções.A tabela a seguir mostra onde as palavras-chave estático e extern pode e não pode ser usado.
Uso de estática e extern
Construct |
Pode estático ser usado? |
Pode extern ser usado? |
---|---|---|
Declarações de função dentro de um bloco |
Não |
Sim |
Argumentos formais para uma função |
Não |
Não |
Objetos em um bloco |
Sim |
Sim |
Objetos fora de um bloco |
Sim |
Sim |
Funções |
Sim |
Sim |
Funções de membro de classe |
Sim |
Não |
Dados de membro de classe |
Sim |
Não |
typedefnomes |
Não |
Não |
Um nome especificado usando o estático palavra-chave tem ligação interna, exceto para os membros estáticos de uma classe que tenha ligação externa.Ou seja, não é visível fora da unidade de conversão atual.Um nome especificado usando o extern palavra-chave tem ligação externa, a menos que definido anteriormente como tendo ligação interna.Para obter mais informações sobre a visibilidade dos nomes, consulte escopo e programa e ligação.
Observação |
---|
Funções que são declaradas como in-line e que não são funções de membro de classe são dadas as mesmas características de ligação, como funções declaradas como estático. |
Um nome de classe cuja declaração não foi encontrada pelo compilador pode ser usado em um extern declaração.O nome apresentado com tal declaração não pode ser usado até que a declaração da classe foi encontrada.