Programar em C/Pré-processador: diferenças entre revisões

[edição verificada][edição verificada]
Conteúdo apagado Conteúdo adicionado
Hycesar (discussão | contribs)
Abacaxi (discussão | contribs)
Sem resumo de edição
Linha 4:
O pré-processador C é um programa que examina o programa fonte escrito em C e executa certas modificações nele, baseado nas '''diretivas de compilação''' (ou ''diretivas do pré-processador''). As diretivas de compilação são comandos que não são compilados, sendo dirigidos ao pré-processador, executado pelo compilador antes da execução do processo de compilação propriamente dito.
 
Portanto, o pré-processador modifica o programa fonte, que ainda não estaria pronto para ser entregue ao compilador. Todas as directivasdiretivas de compilação são iniciadas pelo caractere # (sharp). As diretivas podem ser colocadas em qualquer parte do programa, mas não podem ser colocadas na mesma linha que outra diretiva ou instrução.
 
As principais diretivas de compilação são:
Linha 27:
#include <''nome_do_arquivo''>
 
A diferença entre se usar <tt>""</tt> e <tt><></tt> é somente a ordem de procura nos directóriosdiretórios pelo arquivo especificado. Se você quiser informar o nome do arquivo com o caminho completo, ou se o arquivo estiver no directóriodiretório de trabalho, use <tt>"arquivo"</tt>. Se o arquivo estiver nos caminhos de procura pré-especificados do compilador, isto é, se ele for um arquivo do próprio sistema (como é o caso de arquivos como ''stdio.h'', ''string.h'', etc...), use <tt><arquivo></tt>.
 
=== <tt>#define</tt> ===
Linha 65:
Aqui, a linha de código: <code>x = max(i, j);</code> será substituída pela linha: <code>x = ((i) > (j) ? (i) : (j));</code>. Ou seja, atribuiremos a ''x'' o maior valor entre ''i'' ou ''j''.
 
Quando você utiliza a diretiva <tt>#define</tt>, nunca deve haver espaços em branco no identificador (o nome da macro). Por exemplo, a macro <tt>#define PRINT (i) printf(" %d \n", i)</tt> não funcionará correctamentecorretamente
porque existe um espaço em branco entre <tt>PRINT</tt> e <tt>(i)</tt>.
 
Linha 98:
#endif
 
A sequência de declarações será compilada apenas se a expressão fornecida for verdadeira. É muito importandeimportante ressaltar que a expressão fornecida não pode conter nenhuma variável, apenas valores constantes e símbolos do pré-processador.
 
=== <tt>#else</tt> ===