No linkage

The following kinds of identifiers have no linkage:

You cannot use a name with no linkage to declare an entity with linkage. For example, you cannot use the name of a class or enumeration or a typedef name referring to an entity with no linkage to declare an entity with linkage. The following example demonstrates this:

int main() {
  struct A { };
//  extern A a1;
  typedef A myA;
//  extern myA a2;
}

The compiler will not allow the declaration of a1 with external linkage. Class A has no linkage. The compiler will not allow the declaration of a2 with external linkage. The typedef name myA has no linkage because A has no linkage.