1
resposta

Inline VS #define

Eu já vi em outros códigos algumas definições de macros usando #define. Achei semelhante a sua explicação de inline.

#include <iostream>
using namespace std;
#define abs(i)  \
        ( (i) >= 0 ? (i) : -(i) )

inline int inlineAbs(int i)
{
  return i >= 0 ? i : -i;
}
int main()
{
  int x = abs(-4);
cout << x << endl  
x = inlineAbs(-4);
cout << x << endl
}

Poderias explicar a diferença?

1 resposta

Ótima pergunta, Eduardo!

Uma macro é basicamente uma instrução para o compilador fazer uma substituição na hora de compilar. Uma função inline é uma dica e o compilador pode julgar que não faz sentido realizar esse inline. Basicamente a diferença é essa. E funções inline são mais fáceis de debugar visto que em modo de debug o compilador deixa a função separada. :-D