Partilhar via


Classe de armazenamento

O especificador de classe de armazenamento em uma definição de função fornece a função ou extern ou estático classe de armazenamento.

Sintaxe

  • definição de função:
    especificadores de declaração optseq do atributo optDeclarador declaração-list optdeclaração de compostos

    / * atributo-seq é específico do Microsoft * /

  • especificadores de declaração:
    especificadores de declaração de especificador de classe de armazenamento opt

    especificadores de declaração de especificador de tipo opt

    especificadores de declaração de qualificador de tipo opt

  • especificador de classe de armazenamento: / * definições de função * /
    extern

    estático

Se uma definição de função não incluir um especificador de classe de armazenamento, a classe de armazenamento padrão é extern.Você pode declarar explicitamente uma função como extern, mas ele não é necessário.

Se a declaração de uma função contém o especificador de classe de armazenamentoextern, o identificador tem o mesmo vínculo como qualquer declaração visível do identificador com escopo de arquivo. Se não houver nenhuma declaração visível com o escopo do arquivo, o identificador tem ligação externa.Se um identificador tem o escopo do arquivo e não especificador de classe de armazenamento, o identificador tem ligação externa.Ligação externa significa que cada instância do identificador denota o mesmo objeto ou função.Consulte tempo de vida, escopo, visibilidade e a ligação para obter mais informações sobre o escopo de ligação e o arquivo.

Declarações de função do escopo de bloco com um especificador de classe de armazenamento diferente de extern gerar erros.

Uma função com estático classe de armazenamento é visível apenas no arquivo de origem no qual ela está definida.Todas as outras funções, se eles recebem extern classe de armazenamento explícita ou implicitamente, são visíveis em todos os arquivos de origem no programa.Se estático classe de armazenamento for desejado, ele deve ser declarado na primeira ocorrência de uma declaração da função (se houver) e na definição da função.

Específicos do Microsoft

Quando as extensões do Microsoft estão habilitadas, uma função declarada originalmente sem uma classe de armazenamento (ou com extern classe de armazenamento) é dado estático se a definição da função estiver no mesmo arquivo de origem e se a definição especifica explicitamente de classe de armazenamento estático classe de armazenamento.

Durante a compilação com a opção de compilador /Ze, funções declaradas dentro de um bloco usando o extern palavra-chave ter visibilidade global.Isso não é verdadeiro quando compilando com /Za.Este recurso não deve ser considerado se a portabilidade do código-fonte é uma consideração.

Específicos do Microsoft final

Consulte também

Referência

Definições de função c