FIX: Error C2371 on Struct Typedef that Does Not Have a Tag (139871)



The information in this article applies to:

  • Microsoft Visual C++ 2.0, when used with:
    • the operating system: Microsoft Windows NT
  • Microsoft Visual C++ 2.1, when used with:
    • the operating system: Microsoft Windows NT
  • Microsoft Visual C++ 2.2, when used with:
    • the operating system: Microsoft Windows NT
  • Microsoft Visual C++ 4.0, when used with:
    • the operating system: Microsoft Windows NT
  • Microsoft Visual C++ 4.1, when used with:
    • the operating system: Microsoft Windows NT
  • Microsoft Visual C++ 4.2, when used with:
    • the operating system: Microsoft Windows NT

This article was previously published under Q139871

SYMPTOMS

If you have a typedef for a structure that doesn't have a tag, you may receive the following error when you compile the code:
Error C2371: '<typedef tag>' : redefinition; different basic types

RESOLUTION

Include a tag for the structure.

STATUS

Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This bug was corrected in Visual C++ version 5.0.

MORE INFORMATION

Sample Code to Reproduce Problem

   /* Compile options needed: none
   */ 

   class A
   {
     public:
       const A& operator=(const A&);
   };

   typedef struct  // add tag here
   {
      A a;
   } B;

   B t1, t2;

   void f()
   {
     t2 = t1;
   }

   void main()
   {
      f();
   }
				

Modification Type:MajorLast Reviewed:12/1/2003
Keywords:kbBug kbfix kbLangCPP kbVC500fix KB139871