Compiler Warning (level 3) C4097

typedef-name 'identifier1' used as synonym for class-name 'identifier2'

A typedef name which names a class is itself a class name. However, only a class declared without a tag can be named. In the following line of code the typedef name P is promoted to class name but Q is not.

typedef struct { int member; } P, Q;

Q remains a normal typedef name and a synonym for the class.

The following example causes this warning:

typedef struct _T
{
    int i;
} T;

struct U : T
{
    int j;
};               // warning

struct V : _T
{
    int j;
};               // OK