diferença entre typedef e define [duplicado]

Duplicata Possível:
Typedef e # define o mesmo em c?
Confuso por #define e typedef

Existe alguma diferença entre o seguinte:

#define NUM int

...

NUM x;
x = 5;
printf("X: %d\n", x);

E isto:

typedef int NUM;

...

NUM x;
x = 5;
printf("X : %d\n", x);

Ambos os testes são compilados e executados sem problemas. Então, eles são equivalentes?

Obrigado.

questionAnswers(1)

yourAnswerToTheQuestion