Diferença entre macro e função embutida

Diferença de chave - Macro vs Inline Função
 

Uma macro é um fragmento de código, que é uma diretiva de pré-processador. Uma função embutida é um recurso de aprimoramento do C ++ para minimizar o tempo de execução de um programa. Portanto, o diferença chave entre Macro e Função embutida é que uma macro é verificada pelo pré-processador enquanto uma função embutida é verificada pelo compilador.

Uma macro é incluída no início do programa precedida por um sinal de hash. Quando existe o nome da macro no programa, ele é substituído pelo conteúdo da macro.

CONTEÚDO

1. Visão geral e principais diferenças
2. O que é Macro
3. O que é a função embutida
4. Comparação lado a lado - macro versus função embutida em forma de tabela
5. Resumo

O que é macro?

O pré-processador é um programa que processa o código-fonte antes de passar pelo compilador. Ele opera usando a linha de comando do pré-processador ou as diretivas. No programa, as diretivas do pré-processador são colocadas no programa de origem antes do programa principal. Antes de o código-fonte passar pelo compilador, ele é verificado pelo pré-processador quanto às diretrizes do pré-processador. As diretivas do pré-processador têm o símbolo #. Diferentemente de outras declarações, elas não terminam com ponto e vírgula. Um tipo de diretiva de pré-processador é macro. Geralmente, as macros são escritas em letras maiúsculas.

Figura 01: Programa C ++ com macros

De acordo com o programa acima, as linhas 3 e 4 indicam macros. Ao calcular a área, o valor do PI é substituído usando a macro definida. Na linha 14, volume = CUBO (valor), o pré-processador expande a instrução como volume = (valor * valor * valor). Encontrar o cubo pode ser escrito como uma função, mas aqui ele é escrito usando uma macro. Se houver uma instrução como volume = CUBO (x + y), ela será expandida para o volume = (x + y * x + y * x + y).

Alguns tokens de programação podem facilmente ser digitados incorretamente. Eles podem ser substituídos usando macros. por exemplo. #define AND &&, #define OR ||. Uma definição de macro também pode incluir expressões como #define AREA 4 * 5.56.

O que é a função embutida?

Quando uma função é chamada, o compilador leva algum tempo para executá-la. Se a função não for muito complexa, o programador pode converter a função em uma função embutida. Consulte o programa abaixo.

Figura 02: Função sem linha

O print_hello é uma função simples. Ele imprime a string "Hello" quando a função é chamada. O tempo de execução para essa função é 0.187s. Ao usar a palavra-chave inline da seguinte maneira, o tempo de execução reduz para 0,064s.

Figura 03: Função embutida

Portanto, usando a palavra-chave inline, o tempo de execução é reduzido. As funções embutidas podem não funcionar se houver loops, instruções switch e se a função contiver variáveis ​​estáticas ou funções recursivas.

Qual é a diferença entre macro e função embutida?

Função Macro vs Inline

Uma macro é um fragmento de código, que é uma diretiva de pré-processador incluída no início do programa, precedida por um sinal de hash. Uma função embutida é um recurso de aprimoramento do C ++ para minimizar o tempo de execução de um programa.
Tempo de Avaliação
Na macro, o argumento é avaliado toda vez que é usado no programa. Inline, o argumento é avaliado uma vez.
Verificado por
Uma macro é verificada pelo pré-processador. Uma função embutida é verificada pelo compilador.
 Palavra-chave
Marco usa #define. A função inline usa a palavra-chave 'inline'.
Uso
A macro pode ser usada para definir constantes, expressões, para substituição literal de texto e para definir funções, etc.. Uma função embutida pode ser usada para minimizar o tempo de execução do programa.
Terminação
Macro termina com a nova linha. A função embutida termina com a chave no final da função embutida.
Ponto de definição
Um Marco é definido no início do programa. Uma função embutida pode estar dentro ou fora da classe.

Sumário - Macro vs Inline Função

Este artigo discutiu a diferença entre macro e função embutida. Esses conceitos são usados ​​na programação C ++. A diferença entre macro e função embutida é que uma macro é verificada pelo pré-processador enquanto uma função embutida é verificada pelo compilador.

Referência:

1. "Diretivas de pré-processador". Cplusplus.com. Disponivel aqui 
2. "C Funções em linha". Www.tutorialspoint.com, Tutorials Point, 19 de março de 2018. Disponível aqui