Cursos / Eletrônica / Projeto de Sistemas Microcontrolados / Aula

arrow_back Aula 06 - Fundamentos de Linguagem C - Parte I

Qualificadores

Os qualificadores, também conhecidos como modificadores, podem ser divididos em qualificadores de acesso e de armazenamento. O papel principal dos qualificadores é informar ao compilador o modo como os dados devem ser acessados ou modificados.

Qualificadores de acesso

Os compiladores CCS e C18 suportam os qualificadores padrões volatile e const. O primeiro qualificador indica que o conteúdo da variável pode ser modificado durante a execução do programa. Já o segundo qualificador mostra que o valor da variável não pode ser modificado pelo programa. Sempre que o qualificador const for utilizado, se faz necessária a atribuição de um valor no momento da declaração da variável.

Qualificadores de armazenamento

São elementos especiais usados para controlar a maneira como o compilador irá lidar com o armazenamento das variáveis. Os compiladores CCS e C18 fazem uso dos quatro qualificadores definidos em C, padrão ANSI: auto; extern; static; register. O C18 adiciona mais um qualificador: o overlay.

  • auto: mostra que a variável existirá enquanto o procedimento estiver ativo. Não é necessário utilizar esse modificador, porque, por definição, as variáveis em C possuem escopo local.
  • extern: é utilizado para especificar variáveis externas ao módulo corrente.

    Para uma melhor compreensão desse qualificador, suponha que dois arquivos (arquivo1.c e Arquivo2.c) tratem uma variável comum (resultado_mult). Caso a declaração da variável resultado_mult, localizada no Arquivo2.c, não seja feita com o qualificador extern, o compilador gerará um erro informando a ocorrência de multiplicidade de declaração.

    Exemplo

  • static: declara ao compilador que a variável ocupará uma posição permanente na memória, ou seja, ela funcionará como uma variável global no sentido de que não será destruída ao termino da execução da função na qual foi declarada e, de antemão, pode funcionar como uma variável local no aspecto de que não será conhecida fora da função em que foi declarada.
  • register: indica ao compilador que a variável declarada deve ser alocada como um registrador da CPU. Nos microcontroladores PIC, esse tipo de qualificador não faz sentido, uma vez que as variáveis já são armazenadas e tratadas como registradores.
  • Overlay: esse qualificador pertence, exclusivamente, ao compilador C18 e tem como função principal alocar, estaticamente, variáveis locais e parâmetros. Sempre que possível, as variáveis locais serão sobrepostas com variáveis locais de outra função.

Qualificadores de armazenamento extras do C18

Para melhor tratar de dados de memória em uma arquitetura Harvard, o compilador C18 introduziu outros quatro qualificadores de memória: ram, rom, near e far. Os dois primeiros permitem distinguir se os dados estão localizados numa memória do tipo RAM ou numa memória do tipo ROM, já que essas memórias não compartilham o mesmo barramento. A utilização dos qualificadores ram e rom deve preceder a especificação dos qualificadores far e near, como demonstrado nos exemplos a seguir:

Versão 5.3 - Todos os Direitos reservados