No, it is not recommended to use #define in C ++.
It is good to use typedef as it has a well-defined area
typedef is defined by scope, and the compiler interprets its definition every time it occurs, and not in #define. #define is interpreted as compilation time.
Here is the definition of MSDN typedef and #define
A typedef is entered in the typedef declaration, which within its scope becomes a synonym for the type specified by the declaration type declaration part
DEFINE .
#define LBitmap std::list < CBITMAP *> // BAD
typedef std::list < CBITMAP *> LBitmap
#define CHARPTR char*
CHARPTR a, b;
char* a, b;
a char *, b char
typedef
typedef char* CHARPTR;
CHARPTR a, b;
a b char *