🔧
Manuais Técnicos
  • Manuais Técnicos
  • Eletrônica
    • Motores DC
      • Princípios do Eletromagnetismo
      • Diferenças na construção de motores DC elétricos
      • Escolha de Motores
      • Modelagem motor brushed
    • PCBs
      • Conceitos Básicos
        • Resistores
        • Capacitores
        • Indutores
        • Diodos
      • Conceitos Avançados
        • Reguladores
        • Comunicações Digitais
        • Simulação de Sinais
        • Tratamento de sinais
        • Filtros de sinal RC
      • Altium
        • Normas
        • Organização no esquemático
          • Net Labels (Rótulos de Rede)
          • Nomeclatura dos componentes
          • Estética e Leitura Rápida
        • Criação da PCB no Altium
          • Espaçamento entre Componentes, Trilhas e Vias
          • Encapsulamento, Gerbers e Footprints
    • Programação
      • 1. Introdução
      • 2. Comentários
      • 3. Identação
      • 4. Variáveis
      • 5. Funções
      • 6. Bibliotecas
      • 7. Pré-Processamento
      • 8. VS Code
      • 9. GitHub
    • Baterias LiPo
      • Conceitos básicos
        • Resistência interna
        • Taxa de descarga
        • Capacidade de carga
        • Tensão nominal
      • Dimensionando e escolhendo uma bateria
        • Sistema de Locomoção
          • Cálculo de torque
          • Dados dos motores
          • Corrente no sistema
          • Consumo total do sistema
          • Conclusões
          • Exemplo
        • Sistema de Arma
          • Obtendo o torque da arma
          • Correntes da arma
          • Conclusões
          • Exemplo
        • Escolha de uma bateria
          • Sistemas em Paralelo
          • Sistemas em Série
          • Escolha da Bateria
      • Utilização do carregador
        • Opção de carga
        • Opção Storage
        • Opção Balance
      • Notas para uma operação segura
      • Práticas para aumentar a vida útil da bateria
      • Como montar uma bateria Li-Po
    • Altium
      • Instalação e Ativação
      • Esquemático
      • Roteamento
    • Controle de PS4
      • Hardware
      • Software
      • Aplicações
      • Conclusão
    • Módulo Bluetooth HC-05
  • Mecânica
    • Solidworks
      • Instalação, Ativação e Interface
      • Esboço 2D
      • Recursos
      • Montagem
      • Desenho
      • Projeto com Ajustes e Tolerâncias
      • Pack & Go
    • Tratamento Térmico
    • Componentes Mecânicos
      • Parafusos
      • Prisioneiros
      • Porcas
      • Arruelas
      • Anel Elástico
      • Chavetas
      • Rolamentos
      • Correias
      • Engrenagens
      • Eixos
      • Molas Prato
    • Ajustes e Tolerâncias
    • Desenho Técnico
    • Motores
    • Dimensionamentos
    • Usinagem
      • Fresamento convencional
      • Torneamento convencional
      • Corte à água e laser
      • Fresamento e CNC
    • Soldagem
      • Soldagem TIG
    • Impressão 3D
    • Ciência dos Materiais
      • Propriedades mecânicas dos materiais
      • Ensaio de Tração
        • Elasticidade
        • Rigidez
        • Dureza
          • Rigidez x Dureza
        • Resiliência
        • Ductilidade
        • Tenacidade
          • Ductilidade x Tenacidade
        • Tensão de escoamento
        • Tensão máxima
          • Fratura
      • Classificação Dos Materiais
        • Aços
        • Alumínio
        • Polímeros
      • Tratamento Térmico
        • Têmpera com Revenimento
        • Recozimento
        • Carbonitretação
      • Conclusão
    • Pedidos de materiais e serviços
      • Pedidos de aço
      • Pedidos de fibra de carbono
  • Gestão
    • Material de Divulgação Processo Seletivo
Powered by GitBook
On this page
  • 7.1. Introdução
  • Diretivas:
  1. Eletrônica
  2. Programação

7. Pré-Processamento

Previous6. BibliotecasNext8. VS Code

Last updated 2 months ago

7.1. Introdução

Pré-processamento é uma parte da compilação do código antes de chegar ao arquivo final executável

A compilação de um código é dividida em 4 partes, pré -processamento, compilador, assembler e link loader, onde enfim é gerado o código executável.

O pré-processamento é a primeira etapa da compilação sendo dividida em diretivas, sendo as principais o #include ,#define e #ifdef" e using.

Diretivas:

#include: Inclui uma biblioteca ao programa.

Exemplos:

#include <lib.h>

Procura o arquivo primeiro na biblioteca padrão do compilador.

#include “lib.h”

Procura o arquivo primeiro na biblioteca local.

#define

Diretiva responsável pela definição de macros e constantes simbólicas que são usadas no código.

Exemplos:

#define SUM (A,B,C) (A+B+C) #define max(a,b) (a<b ? b : a)

As macros do exemplo acima também poderiam ser escritas em linhas diferentes da seguinte forma:

#define max(a,b) ( a<b ? b : a )

Nestes casos, o final de cada linha deve ser finalizada com uma contrabarra (). Em uma programação de microcontroladores existem uma série de pinos onde cada um serve o seu propósito, o comando #define pode determinar uma variável como um comando usado para se referir ao pino, como o exemplo a seguir que mostra um pino de saída de algum led de um circuito sendo definido como a variável LED.

Exemplo:

#define LED PORTAbits.RA3 Agora toda vez que escrevermos LED estaremos nos referindo a esta saída.

#undef: Desfaz a definição selecionada.

Exemplo: #define LED PORTAbits.RA3 //Define um pino do microcontrolador

#undef LED // Desfaz a definição de LED

Em alguns momentos pode ser conveniente apagar um macro ou uma parte do código a fim de realizar testes e mensagens de depuração durante o desenvolvimento do programa e excluí-los da versão final do código.

Compilação condicional #if elif #else #ifdef #ifndef #endif

As diretivas condicionais, descritas acima, geralmente são utilizadas para verificar se algo está definido, importante para que algo não seja definido duas vezes. Portanto cada uma pode ser referenciada como uma lógica dentro de um if comum logo: #if usado como um if comum #elif: Usado como um elseif, só pode ser usado após o uso de um #if. #else: Usado como um else comum, assim, também, só pode ser usado após o uso de #if. #ifdef

Verifica se o seu parâmetro está definido, muito útil em códigos onde bibliotecas diferentes são alteradas e utilizadas com frequência, portanto, é muito usada para evitar erros definição.

#ifndef De modo análogo a #ifdef, #ifndef verifica se não está definido, portanto, suas utilidades são, geralmente, bem parecidas.

#endif Usada para finalizar e marcar o escopo das diretivas condicionais.

Exemplo: #if VL53L0X_OLD //executa um código #endif

Toda diretiva condicional deve ser sempre finalizada com o #endif.

#using

Usado para referenciar os objetos de um arquivo, sendo assim, não precisamos referenciar o nome completo de uma função.

Exemplo:

using namespace std; int main() { cout << "Hello World" << endl; return 0; }

portanto, não precisamos escrever: std::cout, Para o compilador cout já basta *(Outras Aplicações podem ser usadas para a diretiva using, porém acredito que não seja útil para a aplicação do Trincabotz).

#error:

Imprime para o usuário um erro, uma string indicando o erro, e finaliza prematuramente o processo de compilação.

#line Raramente utilizada, a diretiva produz que o compilador trate as linhas posteriores do programa como se o nome do arquivo-fonte fosse <“nome_arquivo”> e como se o número da linha de todas as linhas posteriores começasse por constante. Se <“nome_arquivo”> não for especificado, utiliza-se o nome do arquivo especificado pela última diretiva #line, ou o nome do arquivo-fonte (se nenhum arquivo foi especificado previamente). É utilizada para sinalizar o arquivo e a linha visualizada pelo programador quando é emitido algum erro.

Exemplo:

Partindo do pressuposto que o código exemplificado começa na linha 1:

Output:

Esse código está na linha 2, no arquivo Trincabotz.cpp Esse código está na linha 10, no arquivo Trincabotz.cpp Esse código está na linha 20, no arquivo Hello.cpp Esse código está na linha 21, no arquivo Hello.cpp

#pragma

Com essa diretiva é possível utilizar outras diretivas que um determinado compilador C utiliza. Caso o compilador não reconheça a diretiva, ela será ignorada.

Exemplo:

Diretiva nula “#” “#” é uma diretiva nula, o compilador irá ignorar a linha que possui tal diretiva