Translations of this page?:

#define

Sintaxe:

    #define nome-da-macro cadeia-correspondente

O comando #define é utilizado para fazer substituições ao longo do ficheiro em que está localizado. Ou seja, #define faz com que o compilador percorra o ficheiro, substituindo cada ocorrência de nome-da-macro por cadeia-correspondente. A cadeia colocada termina no final da linha.

Aqui está um exemplo típico de uso para um #define (em C):

     #define TRUE 1
     #define FALSE 0
     ...
     int done = 0;
     while( done != TRUE ) {
        ...
     }

Outra função do comando #define é que ele pode receber argumentos, tornando-o uma poderosa ferramenta para criação de pseudo-funções. Considere o seguinte código:

     #define absolute_value( x ) ( ((x) < 0) ? -(x) : (x) )
     ...
     int num = -1;
     while( absolute_value( num ) ) {
        ...
     }

Geralmente é uma boa ideia usar parênteses extras quando criar macros complexas. Note que no exemplo acima, a variável “x” está sempre dentro do seu conjunto de parênteses. Desta forma, ela será avaliada por inteiro, antes de ser comparada com 0 ou multiplicada por -1. Além disso, a macro inteira está rodeada por parênteses, para prevenir que seja contaminada por outro código. Se não for cuidadoso, corre o risco de ter o compilador a interpretar de forma errada o seu código. Aqui está um exemplo de como usar o comando #define para criar um loop incrementador genérico for que imprime os inteiros de 1 a 20:

   #define count_up( v, low, high ) \
     for( (v) = (low); (v) <= (high); (v)++ )
 
   ...
 
   int i;
   count_up( i, 1, 20 ) {
     printf( "i is %d\n", i );
   }

Tópicos Relacionados: # e ##, #if,...,#endif, #undef

 
• • • IndexRecent changesRSScc