O pré-processador C é um pré-processador de macro (permite definir macros) que transforma o seu programa antes de ser compilado. Estas transformações podem ser a inclusão de arquivo de cabeçalho, expansões de macro etc.

Todas as diretivas de pré-processamento começam com um símbolo #. Por exemplo,

#define PI 3.14

Alguns dos usos comuns do pré-processador C são:

Incluindo Arquivos de Cabeçalho: #Incluindo

O pré-processador #include é usado para incluir arquivos de cabeçalho para programas em C. Por exemplo,

#include <stdio.h>

Aqui, stdio.h é um ficheiro de cabeçalho. A diretiva #include preprocessor substitui a linha acima com o conteúdo de stdio.h arquivo de cabeçalho.

É por isso que você precisa usar #include <stdio.h> antes de poder usar funções como scanf() e printf().

Você também pode criar seu próprio arquivo de cabeçalho contendo declaração de funções e incluí-lo em seu programa usando esta diretiva de pré-processador.

#include "my_header.h"

Visitar esta página para aprender mais sobre o uso de arquivos de cabeçalho.

Macros usando #define

Uma macro é um fragmento de código que recebe um nome. Você pode definir uma macro em C usando a diretiva #definepreprocessador.

Aqui está um exemplo.

#define c 299792458 // speed of light

Aqui, quando usamos c em nosso programa, ele é substituído por 299792458.

Exemplo 1: #define preprocessor

#include <stdio.h>#define PI 3.1415int main(){ float radius, area; printf("Enter the radius: "); scanf("%f", &radius); // Notice, the use of PI area = PI*radius*radius; printf("Area=%.2f",area); return 0;}

Função como Macros

Pode também definir macros que funcionam de uma forma semelhante a uma chamada de função. Isto é conhecido como macros com funções. Por exemplo,

#define circleArea(r) (3.1415*(r)*(r))

Tempo que o programa se encontra circleArea(argument), ele é substituído por (3.1415*(argument)*(argument)).

Suponha, passamos 5 como um argumento então, ele se expande como abaixo:

circleArea(5) expands to (3.1415*5*5)

Exemplo 2: Usando #define preprocessor

#include <stdio.h>#define PI 3.1415#define circleArea(r) (PI*r*r)int main() { float radius, area; printf("Enter the radius: "); scanf("%f", &radius); area = circleArea(radius); printf("Area = %.2f", area); return 0;}

Visite esta página para aprender mais sobre macros e #define preprocessor.

Conditional Compilation

Na programação em C, você pode instruir o preprocessador a incluir ou não um bloco de código. Para fazer isso, diretivas condicionais podem ser usadas.

É similar a uma instrução if com uma grande diferença.

A instrução if é testada durante o tempo de execução para verificar se um bloco de código deve ser executado ou não, enquanto que, os condicionals são usados para incluir (ou pular) um bloco de código no seu programa antes da execução.

Uses of Conditional

  • usar código diferente dependendo da máquina, sistema operacional
  • compilar o mesmo arquivo fonte em dois programas diferentes
  • excluir determinado código do programa, mas mantê-lo como referência para fins futuros

Como usar o condicional?

Para usar condicional, #ifdef, #if, #defined, #else e #elseif são usadas diretivas.

#ifdef Directiva

#ifdef MACRO // conditional codes#endif

Aqui, os códigos condicionais são incluídos no programa apenas se MACRO estiver definido.

#if, #elif e #else Directiva

#if expression // conditional codes#endif

Aqui, expressão é uma expressão do tipo inteiro (pode ser inteiros, caracteres, expressão aritmética, macros e assim por diante).

Os códigos condicionais são incluídos no programa somente se a expressão for avaliada a um valor não zero.

A directiva opcional #else pode ser usada com #if directiva.

>

#if expression conditional codes if expression is non-zero#else conditional if expression is 0#endif

Pode também adicionar condicional aninhado ao seu #if...#else usando #elif

#if expression // conditional codes if expression is non-zero#elif expression1 // conditional codes if expression is non-zero#elif expression2 // conditional codes if expression is non-zero#else // conditional if all expressions are 0#endif

#defined

O operador especial #defined é usado para testar se uma determinada macro está definida ou não. É frequentemente usado com a diretiva #if.

#if defined BUFFER_SIZE && BUFFER_SIZE >= 2048 // codes

Macros pré-definidas

Aqui estão algumas macros pré-definidas na programação C.

__FILE__

Macro Valor
__DATE__ Uma cadeia contendo a data corrente
A string contendo o nome do ficheiro
__LINE__ Um número inteiro representando o número da linha actual
__STDC__ Se seguir a norma ANSI C, então o valor é um inteiro não nulo
__TIME__ Uma string contendo a data atual.

Exemplo 3: Obtenha a hora corrente usando __TIME__

O programa seguinte produz a hora corrente usando __TIME__ macro.

#include <stdio.h>int main(){ printf("Current time: %s",__TIME__); }

Saída

Current time: 19:54:39

Leituras recomendadas

  • Controle de linha
  • Pragmas
  • Pré-processador de saída
  • Outras diretivas

Deixe uma resposta

O seu endereço de email não será publicado.