Diretivas de Pré processamento
Por: MattSmith07 • 14/9/2016 • Artigo • 1.865 Palavras (8 Páginas) • 284 Visualizações
DIRETIVAS DE PRÉ-PROCESSAMENTO E MACROS UTILIZADAS EM LINGUAGEM C
Matheus Filipe da Silva Ramos
Programação Imperativa – Prof. Dr. Edson J. Justino
RESUMO: As chamadas diretivas são indispensáveis quando o assunto é programação, pois a partir delas que o programa pode ser “expandido”, fazendo com que o escopo do mesmo fique muito mais amplo. Entre os muitos usos de diretivas, os mais comuns são a compilação condicional, controle de links e relatórios de erro e avisos. Podemos definir inúmeros usos e funções para o mesmo. Outros assuntos indispensáveis para este artigo são os pré-processadores, que são a base para toda a programação.
Palavras chave: diretiva, pré-processador, programação.
INTRODUÇÂO
Em programação vemos que é necessário sempre incluir as bibliotecas (para que o programa funcione corretamente) e definir alguns parâmetros – se necessários – utilizando o comando #include ou #define. Para que fique mais simples para o entendimento, é necessário explicar o que são as diretivas e o pré-processamento.
Ainda na programação, o pré-processamento é o primeiro passo para a compilação de um programa. O pré-processador analisa e utiliza o texto do programa fonte para analisa-lo e assim, torna o programa útil. Com relação às diretivas, estas nada mais são do que a forma como o compilador constrói o programa. Em outras palavras, é uma direção (instrução) de como o compilador deve montar a imagem do programa. Toda a diretiva é indicada pelo símbolo # (#include, #if, #def, #else, #define, etc).
É importante ressaltar que o pré-processador possui muitas diretivas próprias que o auxiliam na execução do programa. Serão listadas as principais diretivas e suas funções aqui.
Com relação às macros, são ferramentas muito úteis quando se faz o uso correto delas. São úteis para melhorar a leitura do código e aperfeiçoar-lo. Mas caso o programador não saiba usar corretamente, pode acarretar muitos bugs e muita dor de cabeça para consertá-los.
De forma sucinta, macros são – de modo genérico – substituições de strings. São funções que o pré-processador reconhece por meio da diretiva #define. As mais comuns são macros referentes à objetos (utilizado para dar nome à constantes) e funções (para definir uma função específica). É bem simples utilizar tais funções, mas qualquer falta de atenção pode – conforme já falado – fazer com que o programa apresente erros “básicos”. O uso de macros é realmente interessante, pois as macros por função, por exemplo, trabalhar como funções. Como estas macros não gerenciam chamadas de função reais, na maioria das vezes você pode executar um programa mais rapidamente apenas substituindo as funções reais por macros de função.
1 DIRETIVAS DE PRÉ-PROCESSAMENTO
De modo formal, uma diretiva é uma regra que o pré-processador segue para executar o código (compilar o programa). Por ter essa função, são necessárias muitas regras para que a chance de ocorrer bugs seja mínima. E é por essa razão que o pré-processador trabalha com as mais variadas diretivas para que os programas de origem sejam mais versáteis no sentido de funcionarem em, basicamente, qualquer ambiente. Vamos listar as principais diretivas nos próximos tópicos.
2 #define
A diretiva #define define um identificador e uma string que irá substituir este mesmo identificador toda vez que ele for encontrado no código fonte. Por padrão, definimos o identificador como nome de macro e, consequentemente, a substituição feita como substituição de macro. De forma geral temos que: #define nomedamacro string.
É importante observar que não há ponto e vírgula em #define. Pode ter muitos espaços entre o identificador e a string, mas não pode ter um ponto e vírgula no final da diretiva, pois a mesma termina pulando uma linha. Há algumas restrições quanto ao uso correto da diretiva define:
- Caso o identificador esteja dentro de aspas, não ocorrerá a substituição:
#define ABC Prog Imperativa
printf(“ABC”);
Neste caso, não será substituído o ABC por Pro Imperativa.
- Caso a string seja maior que a linha, é necessário colocar uma contra barra para que a diretiva entenda que a linha seguinte ainda se trata do seu escopo:
#define ABC Por ser uma string \ longa, usa-se a contra barra
A diretiva #define é comumente usada para substituição de números específicos em um programa. Por exemplo, caso haja uma matriz em seu programa, pode definir o tamanho dessa matriz como TAM e usar o #define TAM 20 (ou o tamanho que deseja). Todo vez que for necessário alterar o tamanho da matriz, não será preciso alterar valor por valor no programa, mas sim o valor em TAM.
3 #error
Esta diretiva força o compilador para que encerre o programa e é usado para depuração:
#error mensagemdeerro
A mensagem de erro não deve ficar entre aspas. Quando esta mensagem é apresentada, ela será acompanhada por outras informações pré-definidas anteriormente.
4 #include
Talvez a diretiva mais importante até agora, pois é por meio dela que são atribuídas as bibliotecas ao programa. A diretiva #include instrui o programa a ler um arquivo fonte adicionado àquele que contém a diretiva #include. A restrição para esse comando é que o arquivo adicional deve estar entre sinais de menor e maior ou entre aspas:
#include
#include “stdlib.h”
Caso o nome arquivo adicional esteja entre chaves angulares (< >), ele será procurado de forma definida pelo compilador, ou seja, basicamente o programa irá procurar pelo arquivo numa pasta especificamente criada para esse fim, independente da implementação. Caso o nome do arquivo esteja entre aspas, o arquivo será procurado inicialmente no mesmo diretório em que o arquivo está sendo compilado.
A diretiva #include é muito usada para incluir alguns arquivos de standard header como
...