As principal vantagem da utilização do pré-processador é a possibilidade de tornar os programas:
#define begin {
#define end }
#define nome texto_de_definiçãoPor exemplo:
#define FALSE 0É possivel definir também pequenas "funções" com parâmetros (macros) cujas "chamadas" no texto do programa são substituídas pelo texto_de_definição com os parâmetros também substituídos. Por exemplo, seria possível definir uma macro max que nos dá o máximo de duas expressões:
#define TRUE !FALSE
#define max(A, B) ((A) > (B) ? (A) : (B))Note-se que esta directiva não define uma verdadeira função do C, mas apenas uma subsituição de texto com o aspecto de uma chamada a função. Assim quando pré-processador encontra no texto do programa qualquer coisa como:
x = max(r+s, s+t);esta linha de texto é substituída por outra linha de texto, igual a:
x = ((r+s) > (s+t) ? (r+s) : (s+t));Outro exemplo:
#define Deg_to_Rad(x) (x * M_PI / 180.0)M_PI é uma constante contendo o valor de pi que está definida no arquivo de inclusão da biblioteca standard math.h.
#include <nome_de_arquivo>
ou
#include "nome_de_arquivo"
A forma <...> indica que o arquivo a incluir deve ser procurado num diretório pré-definido onde se encontram os arquivos de inclusão da biblioteca standard. Por exemplo, no UNIX, esse diretório é /usr/include.
A forma "..." procura o arquivo a incluir no diretório corrente.
Estes arquivos de inclusão contêm geralmente declarações
de variáveis, tipos, constantes ou protótipos de funções
e nunca instruções executáveis.
Outras formas da diretiva #if são:
#ifdef nome - que verifica
se nome foi previamente definido numa diretiva #define,
e
#ifndef nome - que verifica
se o nome ainda não foi definido anteriormente.
Por exemplo, para definir uma constante que contenha o número de bits de um inteiro, que possa ser compilado correctamente em Ms-Dos no compilador Turbo C e no UNIX, poderiamos pôr no programa as seguintes directivas:
#ifdef TURBOCOutro exemplo:
#define INT_SIZE 16
#else
#define INT_SIZE 32
#endif
#if SYSTEM == MSDOS
#include <msdos.h>
#else
#include "default.h"
#endif