#define T Stack_T typedef struct T *T;
Then what does T in struct T mean,the one defined by #define or
T
struct T
#define
Since #define is processed in pre-compilation and struct in compilation, after the pre-compilation you'll have typedef struct T *T; looks like that: typedef struct Stack_T *Stack_T;
struct
typedef struct T *T;
typedef struct Stack_T *Stack_T;