#define is a macro where preprocessor replaces all its presence with the value where typedef is a user defined data type
#define C 5
void main()
{
printf("%d",C);->here the preprocessor replaces C with 5
}
typedef int x;
x a;
now x refers to integer datatype but name is user defined