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.