Compartilhar via


Escopo e visibilidade

Visibilidade de um identificador"" determina as partes do programa em que podem ser referenciado — seu "escopo". Um identificador é visível (ou seja, pode ser usado) somente em partes de um programa circundado pelos seus "escopo," que podem ser limitadas (em ordem de aumento de restrictiveness) para o arquivo, função, bloquear ou protótipo de função na qual ele aparece.O escopo de um identificador é a parte do programa em que o nome pode ser usado.Isso às vezes é chamado de "escopo léxico". Há quatro tipos de escopo: função, o arquivo, o bloco e o protótipo de função.

Todos os identificadores exceto rótulos têm seu escopo determinado pelo nível em que a declaração ocorre.As seguintes regras para cada tipo de escopo orientam a visibilidade de identificadores dentro de um programa:

  • Escopo do arquivo
    O especificador de tipo para um identificador de escopo do arquivo ou Declarador aparece fora de qualquer bloco ou uma lista de parâmetros e é acessível a partir de qualquer lugar na unidade de conversão após sua declaração.Nomes de identificador com escopo de arquivo são chamados "global" ou "externo". O escopo de um identificador global começa no momento da sua declaração ou definição e termina no final da unidade de conversão.

  • Escopo de função
    Um rótulo é o único tipo de identificador que tem escopo de função.Um rótulo é declarado implicitamente pelo seu uso em uma instrução.Nomes de rótulo devem ser exclusivos dentro de uma função.(Para obter mais informações sobre rótulos e nomes de rótulo, consulte O goto e instruções rotuladas.)

  • Escopo de bloco
    O especificador de tipo para um identificador com escopo de bloco ou Declarador aparece dentro de um bloco ou dentro da lista de declarações de parâmetro formal em uma definição de função.Ele fica visível somente a partir do ponto de sua declaração ou definição de até o final do bloco que contém sua declaração ou definição.Seu escopo é limitado para esse bloco e os blocos aninhados nesse bloco e termina em chave de abertura que fecha o bloco associado.Esses identificadores são chamados de "variáveis locais".

  • Escopo do protótipo de função
    O especificador de tipo para um identificador com escopo de protótipo de função ou Declarador aparece na lista de declarações de parâmetro em um protótipo de função (que não faça parte da declaração da função).Seu escopo termina no final do Declarador de função.

As declarações apropriadas para tornar visíveis as variáveis em outros arquivos de origem são descritas na Classes de armazenamento.No entanto, funções e variáveis declaradas no externos nível com o estático o especificador de classe de armazenamento são visíveis apenas dentro do arquivo de origem em que eles são definidos.Todas as outras funções são globalmente visíveis.

Consulte também

Conceitos

Tempo de vida, escopo, visibilidade e ligação