A typedef just renames an already existing type. If all your macro does is provide an alias for a type, then the macro and the typedef are identical functionally.
Code:
typedef int NUMBER;
#define NUMBER int
However, a macro can be used to represent blocks of code which a typedef cannot.
Comment