o que faz #define [RESOLVIDO]

1. o que faz #define [RESOLVIDO]

Vinícius dos Santos Oliveira
vinipsmaker

(usa Arch Linux)

Enviado em 20/04/2009 - 19:51h

Estava eu estudando c, quando de repente a apostila vi um código com o #define, mas a apostila ainda não explicou sobre define. O que faz o #define?
#define DIM 40
#include < stdio .h >
i n t main ( void )
{
char nome [ DIM ]; /* linha de caracteres lidos */
/* Entrada de dados do vetor */
printf ( " Por favor , qual o seu nome ?\ n " );
scanf ( " % s " , nome );
printf ( " Sou um computador . Posso ajuda - lo % s ?\ n " , nome );
return 0;
}


  


2. MELHOR RESPOSTA

Marcelo A. B. Slomp
mslomp

(usa Slackware)

Enviado em 20/04/2009 - 20:08h

#define é uma diretiva do pré-processador (do compilador) que causa a expansão de uma macro para um determinado valor/código.
no caso de #define DIM 40, temos a macro DIM definida como 40. então, o pré-processador irá substituir cada ocorrência de DIM no seu código com o valor 40. só então o código poderá ser compilado de fato. um dos objetivos (há outros) de #define é auxiliar na organização do código. por exemplo, quando você tem nome[DIM], sabe que refere-se à dimensão do seu array. o valor 40 solto no código não diria muita coisa, e dificultaria a leitura.
na saída do pré-processamento, aí sim o código será char nome[40];

dica para se familiarizar com essas diretivas e observar o seu comportamento:
experimente fazer
$ gcc -E fonte.c -o fonte.i
e veja em fonte.i o seu código pré-processado (lembrando que os arquivos fornecidos à diretiva #include também estarão lá expandidos, então não se espante ao abrir o arquivo - seu código estará lá no final :D)

3. Re: o que faz #define [RESOLVIDO]

Vinícius dos Santos Oliveira
vinipsmaker

(usa Arch Linux)

Enviado em 21/04/2009 - 12:29h

Então, como ficaria o código se eu não quisesse usar o define?


4. Re: o que faz #define [RESOLVIDO]

Marcelo A. B. Slomp
mslomp

(usa Slackware)

Enviado em 21/04/2009 - 12:54h

sem #define:

#include < stdio .h >
int main ( void )
{
char nome [ 40 ]; /* linha de caracteres lidos */
/* Entrada de dados do vetor */
printf ( " Por favor , qual o seu nome ?\ n " );
scanf ( " % s " , nome );
printf ( " Sou um computador . Posso ajuda - lo % s ?\ n " , nome );
return 0;
}







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts