FIX: Error Messages May Say "short" or "int" Instead of "enum" (66778)



The information in this article applies to:

  • Microsoft C for MS-DOS 6.0
  • Microsoft C for MS-DOS 6.0a
  • Microsoft C for MS-DOS 6.0ax
  • Microsoft C for OS/2 6.0
  • Microsoft C for OS/2 6.0a
  • Microsoft C/C++ for MS-DOS 7.0
  • Microsoft Visual C++ 1.0
  • Microsoft Visual C++ 1.5
  • Microsoft Visual C++, 32-bit Learning Edition 4.0
  • Microsoft Visual C++, 32-bit Professional Edition 2.0
  • Microsoft Visual C++, 32-bit Professional Edition 4.0

This article was previously published under Q66778

SYMPTOMS

Because an enumerated type is handled internally the same as a short type, certain compiler error messages may refer to a "short" even though the error involves an "enum". The following sample code contains an error to demonstrate this situation:
   enum {A, B, C}      /* missing ';' at end */ 
   double y;
				
When the above code is compiled with the Microsoft C compiler, the following error message is generated:
error C2139: type following 'short' is illegal
Visual C++ for Windows and Visual C++ 32-bit Edition return:
error C2632: 'int' followed by 'double' is illegal
In this particular case, the error should say:
type following 'enum' is illegal"
However, the compiler does not keep track of whether or not an item was specified as an enum.

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.

Visual C++ 5.0 compiler generates the following error message:
error C2628: '__unnamed' followed by 'double' is illegal (did you forget a ';'?)

Modification Type:MinorLast Reviewed:7/5/2005
Keywords:kbbug kbCompiler kbfix kbVC500fix KB66778