Visão geral de declarações
Uma declaração de"" Especifica os atributos de um conjunto de identificadores e a interpretação.Uma declaração que também faz com que o armazenamento seja reservado para o objeto ou a função chamada pelo identificador é chamada de "definição". C declarações para variáveis, funções e tipos de ter a seguinte sintaxe:
Sintaxe
declaration:
especificadores de declaração init-Declarador-listopt**;**especificadores de declaração:
atributo do especificador de classe de armazenamento-seq optespecificadores de declaração opt
/ * atributo-seq opt é específica a Microsoft * /
especificadores de declaração de especificador de tipo opt
especificadores de declaração de qualificador de tipo opt
Init-Declarador-list:
Declarador de initInit-Declarador-list , Declarador de init
Declarador de init:
DeclaradorDeclarador = inicializador
Observação |
---|
Esta sintaxe para declaration não é repetida nas seções a seguir.Sintaxe nas seções a seguir geralmente começa com a declarator nonterminal. |
Declarações de init-Declarador-list contêm os identificadores que está sendo chamados; Init é uma abreviação para inicializador.O init-Declarador-list é uma seqüência separada por vírgulas de declaradores, cada um deles pode ter um inicializador ou outras informações sobre tipo ou ambos.O declarator contém os identificadores, se houver, que está sendo declarado.O especificadores de declaração nonterminal consiste em uma seqüência de especificadores de tipo e a classe de armazenamento que indicam a ligação, a duração do armazenamento e pelo menos parte do tipo das entidades que denotam aos declaradores.Portanto, declarações são compostas de alguma combinação de especificadores de classe de armazenamento, especificadores de tipo, qualificadores de tipo, declaradores e inicializadores.
Declarações podem conter uma ou mais dos atributos opcionais listados na atributo-seq; SEQ é uma abreviação de seqüência.Esses atributos específicos do Microsoft executam uma variedade de funções, que são discutidas detalhadamente neste livro.Para obter uma lista desses atributos, consulte Resumo de sintaxe de linguagem c.
Na forma geral de uma declaração de variável, especificador de tipo oferece o tipo de dados da variável.O especificador de tipo pode ser um composto, como quando o tipo é modificado por const ou volatile.O declarator fornece o nome da variável, possivelmente modificada para declarar uma matriz ou um tipo de ponteiro.Por exemplo,
int const *fp;
declara uma variável chamada fp como um ponteiro para um nonmodifiable (const) int valor.Você pode definir mais de uma variável em uma declaração por meio de vários declaradores, separados por vírgulas.
Uma declaração deve ter pelo menos um Declarador ou seu especificador de tipo deve declarar uma marca de estrutura, marca de união ou membros de uma enumeração.Declaradores fornecem quaisquer informações restantes sobre um identificador.Um Declarador é um identificador que pode ser modificado com colchetes ([]), asteriscos (*), ou parênteses ( () ) para declarar uma matriz, um ponteiro ou um tipo de função, respectivamente.Ao declarar variáveis simples (como caracteres, inteiros e itens de ponto flutuante), ou estruturas e uniões de variáveis simples, o declarator é apenas um identificador.Para obter mais informações sobre declaradores, consulte declaradores e declarações de variáveis.
Todas as definições são, implicitamente, declarações, mas não todas as declarações são definições.Por exemplo, declarações de variáveis que começam com a extern o especificador de classe de armazenamento são "que faz referência," em vez de "Definindo" declarações.Se uma variável externa deve ser referida antes que ela é definida ou se ele for definido em outro arquivo de origem de um onde é usado, um extern declaração é necessária.Não, o armazenamento é alocado pela "referência" declarações, nem variáveis podem ser inicializadas em declarações.
Uma classe de armazenamento ou um tipo (ou ambos) é necessária nas declarações de variável.Exceto para __declspec, o especificador de classe de armazenamento de apenas um é permitido em uma declaração e nem todos os especificadores de classe de armazenamento são permitidos em cada contexto.O __declspec classe de armazenamento é permitido com outros especificadores de classe de armazenamento e é permitido mais de uma vez.O especificador de classe de armazenamento de uma declaração afeta como o item declarado é armazenado e inicializado e quais partes de um programa podem referenciar o item.
O especificador de classe de armazenamento definidos em c de terminais incluem auto, extern, registrar, estático, e typedef.Além disso, inclui o Microsoft C a especificador de classe de armazenamento terminal __declspec.Todos os especificador de classe de armazenamento terminais, exceto typedef e __declspec são discutidas em Classes de armazenamento.Consulte Typedef declarações para obter informações sobre typedef.Consulte Atributos estendidos de classe de armazenamento para obter informações sobre __declspec.
O local da declaração dentro do programa de origem e a presença ou ausência de outras declarações das variáveis são fatores importantes na determinação o tempo de vida das variáveis.Pode haver vários redeclarations, mas somente uma definição.No entanto, uma definição pode aparecer em mais de uma unidade de conversão.Para objetos com ligação interna, essa regra se aplica separadamente para cada unidade de conversão, porque objetos vinculados internamente são exclusivos para uma unidade de conversão.Para objetos com ligação externa, essa regra se aplica a todo o programa.Consulte tempo de vida, escopo, visibilidade e a ligação para obter mais informações sobre a visibilidade.
Especificadores de tipo fornecem algumas informações sobre os tipos de dados de identificadores.O especificador de tipo padrão é int.Para obter mais informações, consulte Especificadores de tipo.Especificadores de tipo também podem definir marcas de tipo, estrutura e nomes de componente de união e constantes de enumeração.Para obter mais informações, consulte Declarações de enumeração, Declarações de estrutura, e Declarações de união.
Há dois qualificador de tipo terminais: const e volatile.Esses qualificadores especificar propriedades adicionais dos tipos que são relevantes apenas ao acessar objetos desse tipo por meio de valores de l.Para obter mais informações sobre const e volatile, consulte Qualificadores de tipo.Para obter uma definição de valores l, consulte L-Value e expressões de R-Value.