Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

C Pré-processador e Macros

Pré-processador C e macros


Neste tutorial, você será apresentado aos pré-processadores c e aprenderá a usar #include, #define e compilação condicional com a ajuda de exemplos.

O pré-processador C é um pré-processador de macro (permite definir macros) que transforma seu programa antes de ser compilado. Essas transformações podem ser a inclusão de arquivo de cabeçalho, expansões de macro etc.

Todas as diretivas de pré-processamento começam com um # símbolo. Por exemplo,

#define PI 3.14

Alguns dos usos comuns do pré-processador C são:

Incluindo arquivos de cabeçalho:#include


O #include pré-processador é usado para incluir arquivos de cabeçalho em programas C. Por exemplo,
#include <stdio.h>

Aqui, stdio.h é um arquivo de cabeçalho. O #include diretiva de pré-processador substitui a linha acima com o conteúdo de stdio.h arquivo de cabeçalho.

Essa é a razão pela qual você precisa usar #include <stdio.h> antes de poder usar funções como scanf() e printf() .

Você também pode criar seu próprio arquivo de cabeçalho contendo declaração de função e incluí-lo em seu programa usando esta diretiva de pré-processador.
#include "my_header.h"

Visite esta página para saber mais sobre como usar arquivos de cabeçalho.

Macros usando #define


Uma macro é um fragmento de código que recebe um nome. Você pode definir uma macro em C usando o #define Directiva do pré-processador.

Aqui está um exemplo.
#define c 299792458  // speed of light

Aqui, quando usamos c em nosso programa, ele é substituído por 299792458 .

Exemplo 1:#define pré-processador

#include <stdio.h>
#define PI 3.1415

int main()
{
    float radius, area;
    printf("Enter the radius: ");
    scanf("%f", &radius);

    // Notice, the use of PI
    area = PI*radius*radius;

    printf("Area=%.2f",area);
    return 0;
}

Função como macros


Você também pode definir macros que funcionam de maneira semelhante a uma chamada de função. Isso é conhecido como macros do tipo função. Por exemplo,
#define circleArea(r) (3.1415*(r)*(r))

Toda vez que o programa encontra circleArea(argument) , ele é substituído por (3.1415*(argument)*(argument)) .



Suponha que passamos 5 como um argumento, então ele se expande como abaixo:
circleArea(5) expands to (3.1415*5*5)

Exemplo 2:usando #define pré-processador

#include <stdio.h>
#define PI 3.1415
#define circleArea(r) (PI*r*r)

int main() {
    float radius, area;

    printf("Enter the radius: ");
    scanf("%f", &radius);
    area = circleArea(radius);
    printf("Area = %.2f", area);

    return 0;
}

Visite esta página para saber mais sobre macros e #define pré-processador.

Compilação condicional


Na programação C, você pode instruir o pré-processador a incluir ou não um bloco de código. Para fazer isso, diretivas condicionais podem ser usadas.

É semelhante a um if declaração com uma grande diferença.

O if A instrução é testada durante o tempo de execução para verificar se um bloco de código deve ser executado ou não, enquanto as condicionais são usadas para incluir (ou pular) um bloco de código em seu programa antes da execução.

Usos de condicional

  • usar código diferente dependendo da máquina, sistema operacional
  • compile o mesmo arquivo fonte em dois programas diferentes
  • para excluir determinado código do programa, mas mantê-lo como referência para fins futuros

Como usar condicional?


Para usar condicional, #ifdef , #if , #defined , #else e #elif diretivas são usadas.

Diretiva #ifdef

#ifdef MACRO     
   // conditional codes
#endif

Aqui, os códigos condicionais são incluídos no programa somente se MACRO é definido.

Diretiva #if, #elif e #else

#if expression
   // conditional codes
#endif

Aqui, expressão é uma expressão do tipo inteiro (pode ser inteiros, caracteres, expressão aritmética, macros e assim por diante).

Os códigos condicionais são incluídos no programa somente se a expressão é avaliado como um valor diferente de zero.

O opcional #else diretiva pode ser usada com #if diretiva.
#if expression
   conditional codes if expression is non-zero
#else
   conditional if expression is 0
#endif

Você também pode adicionar condicionais aninhadas ao seu #if...#else usando #elif
#if expression
    // conditional codes if expression is non-zero
#elif expression1
    // conditional codes if expression is non-zero
#elif expression2
    // conditional codes if expression is non-zero
#else
    // conditional if all expressions are 0
#endif

#definido


O operador especial #defined é usado para testar se uma determinada macro está definida ou não. É frequentemente usado com #if diretiva.
#if defined BUFFER_SIZE && BUFFER_SIZE >= 2048
  // codes

Macros predefinidos


Aqui estão algumas macros predefinidas na programação C.
Macro Valor
__DATE__ Uma string contendo a data atual
__FILE__ Uma string contendo o nome do arquivo
__LINE__ Um número inteiro representando o número da linha atual
__STDC__ Se seguir o padrão ANSI C, o valor será um inteiro diferente de zero
__TIME__ Uma string contendo a data atual.

Exemplo 3:obter a hora atual usando __TIME__


O programa a seguir gera a hora atual usando __TIME__ macro.
#include <stdio.h>
int main()
{
   printf("Current time: %s",__TIME__);   
}

Saída
Current time: 19:54:39

Leituras recomendadas

  • Controle de linha
  • Pragmas
  • Saída do pré-processador
  • Outras diretivas

Linguagem C

  1. Resumo de R, L e C
  2. Palavras-chave e identificadores C#
  3. Classe e objeto C#
  4. Classe abstrata e método C#
  5. C# Classe Parcial e Método Parcial
  6. Classe e método selados em C#
  7. Diretivas de pré-processador C#
  8. C Palavras-chave e Identificadores
  9. C - Constantes e Literais
  10. C - Entrada e Saída