Diferença entre Inline e Macro em C ++
Contente
Macro é uma instrução que se expande no momento de sua invocação. Funções também podem ser definidas, como macros. Da mesma forma, as funções embutidas também se expandem no ponto de sua chamada. Uma diferença principal entre as funções embutida e macro é que o funções embutidas são expandidos durante compilação, e as macros são expandidos quando o programa é processado pelo pré-processador.
Vamos estudar a diferença entre inline e macro com a ajuda do gráfico de comparação.
- Gráfico de comparação
- Definição
- Principais diferenças
- Conclusão
Gráfico de comparação
Base para Comparação | Na linha | Macro |
---|---|---|
Basic | As funções embutidas são analisadas pelo compilador. | As macros são expandidas pelo pré-processador. |
Sintaxe | return_type inline nome_da_função (parâmetros) {. . . } | #define macro_name char_sequence |
Palavras-chave Usadas | na linha | #definir |
Definiram | Pode ser definido dentro ou fora da classe. | É sempre definido no início do programa. |
Avaliação | Ele avalia o argumento apenas uma vez. | Ele avalia o argumento cada vez que é usado no código. |
Expansão | O compilador pode não incorporar e expandir todas as funções. | As macros são sempre expandidas. |
Automação | As funções curtas, definidas dentro da classe, são automaticamente criadas em funções embutidas. | Macros devem ser definidas especificamente. |
Acessando | Uma função de membro embutido pode acessar os membros de dados da classe. | Macros nunca podem ser os membros da classe e não podem acessar os membros de dados da classe. |
Terminação | A definição da função embutida termina com os colchetes no final da função embutida. | A definição de macro termina com a nova linha. |
Depuração | A depuração é fácil para uma função embutida, pois a verificação de erros é feita durante a compilação. | A depuração se torna difícil para macros, pois a verificação de erros não ocorre durante a compilação. |
Obrigatório | Uma função embutida vincula todas as instruções no corpo da função muito bem, pois o corpo da função inicia e termina com colchetes. | Uma macro enfrenta o problema de ligação se tiver mais de uma instrução, pois não possui símbolo de terminação. |
Definição de Inline
Uma função embutida parece uma função regular, mas é precedida pela palavra-chave "na linha". Funções embutidas são funções de tamanho curto que são expandidas no ponto de sua chamada, em vez de serem chamadas. Vamos entender as funções embutidas com um exemplo.
#incluir No programa acima, declarei e defini a função initialize (), como uma função embutida na classe "exemplo". O código da função initialization () será expandido onde é invocado pelo objeto da classe "exemplo". A função display (), definida no exemplo da classe, não é declarada inline, mas pode ser considerada inline pelo compilador, como em C ++, a função definida dentro da classe é automaticamente alinhada pelo compilador, considerando o tamanho da função. Macro é uma "diretiva de pré-processadores". Antes da compilação, o programa é examinado pelo pré-processador e, onde quer que encontre a macro no programa, ele substitui a macro por sua definição. Portanto, a macro é considerada como a "substituição". Vamos estudar macro com um exemplo. #incluir No código acima, declarei uma função macro GREATER (), que compara e encontra o maior número de ambos os parâmetros. Você pode observar que não há ponto e vírgula para finalizar a macro, pois a macro é finalizada apenas pela nova linha. Como uma macro é apenas uma substituição, ela expandirá o código da macro onde é invocada. As funções embutidas são muito mais convincentes que a função macro. O C ++ também fornece uma maneira melhor de definir uma constante, que usa uma palavra-chave “const”.
Definição de Macro
Conclusões: