GeeksforGeeks

Compilar um programa em C – Bastidores

A Pré-processador é um software de sistema (um programa de computador que é projetado para ser executado no hardware do computador e programas de aplicação). Ele realiza o pré-processamento da linguagem de alto nível (HLL). O pré-processamento é o primeiro passo do sistema de processamento da linguagem. O sistema de processamento de linguagem traduz a linguagem de alto nível para linguagem de máquina ou código de máquina absoluto(ou seja, para a forma que pode ser entendida por máquina).

  • O pré-processador não conhece as regras de escopo das diretivas de C. Diretrizes de pré-processador como #define entram em vigor assim que são vistas e permanecem em vigor até o final do arquivo que as contém; a estrutura de blocos do programa é irrelevante.
  • A Pré-processador executa principalmente três tarefas no código HLL :

  1. Removendo comentários : Remove todos os comentários. Um comentário é escrito apenas para que os humanos entendam o código. Portanto, é óbvio que eles não são úteis para uma máquina. Então, o pré-processador remove todos eles pois não são requeridos na execução e não serão executados também.

    Esse é como ver um arquivo com comentários removidos no linux) :
    Escrever um código em C (deixe o nome do arquivo ser prog.c). Pré-processe-o usando o comando gcc -E prog.c


    Verá a saída com o código sem comentários.

    Este arquivo é salvo com uma extensão ‘.i’ (prog.i) que será inserida no compilador.

  2. Inclusão de ficheiros : Incluindo todos os ficheiros da biblioteca que o nosso programa necessita. Em HLL nós escrevemos #include que é uma diretiva para o pré-processador que diz para incluir o conteúdo do arquivo da biblioteca especificado. Por exemplo, #include dirá ao pré-processador para incluir todo o conteúdo do arquivo da biblioteca stdio.h.
    Isso também pode ser escrito usando aspas duplas – #include “stdio.h”
    Note: Se o nome do arquivo estiver entre parênteses angulares, o arquivo é procurado no compilador padrão de caminhos de inclusão. Se o nome do arquivo estiver entre aspas duplas, o caminho de busca é expandido para incluir o diretório fonte atual.
  3. Expansão de macro : Macros podem ser chamadas como pequenas funções que não são tão sobrecarregadas para processar. Se tivermos que escrever uma função (com uma pequena definição) que precisa ser chamada recursivamente (repetidamente), então devemos preferir uma macro em vez de uma função.
    Então, a definição destas macros é feita pelo pré-processador.
    #define SI 1000

    é um exemplo simples de uma macro.

    • Existem dois tipos de macros: Tipo objeto (não tomar parâmetros) e tipo função (Pode tomar parâmetros)
      // object-like macro#define // function-like macro #define () 
    • Você pode apagar uma definição de macro com #undef:
      // delete the macro# undef 
    • Podemos escrever macro multi-linhas iguais a função, mas cada declaração termina com “\”.

      #include <stdio.h>
      #define MACRO(num, str) {\
      printf("%d", num);\
      printf(" is");\
      printf(" %s number", str);\
      printf("\n");\
      }

      
      

      
      

Este artigo é contribuído por Diksha. Se você gosta de GeeksforGeeks e gostaria de contribuir, você também pode escrever um artigo usando contribute.geeksforgeeks.org ou enviar seu artigo pelo correio para [email protected]. Veja o artigo que aparece na página principal do GeeksforGeeks e ajude outros Geeks.

.

Deixe uma resposta

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