PRB: Error CXX0017 or CXX0034 for typedef (119501)



The information in this article applies to:

  • The Visual Workbench Integrated Debugger, when used with:
    • Microsoft Visual C++, 32-bit Editions 1.0
    • Microsoft Visual C++, 32-bit Editions 2.0
    • Microsoft Visual C++, 32-bit Editions 2.1
    • Microsoft Visual C++, 32-bit Editions 4.0
    • Microsoft Visual C++, 32-bit Enterprise Edition 5.0
    • Microsoft Visual C++, 32-bit Professional Edition 5.0

This article was previously published under Q119501

SYMPTOMS

Declare a structure type and typedef a pointer to the structure type as follows:
   struct MYSTRUCT {
      int x;
      int y;
   };

   typedef struct MYSTRUCT* PMYSTRUCT;
				
MYSTRUCT is a structure type and PMYSTRUCT is a typedef for a pointer to MYSTRUCT. Declare and initialize the following variables:
   struct MYSTRUCT var1 = {0, 0};
   PMYSTRUCT var2 = &var1;
				
Putting a watch on "(PMYSTRUCT) &var2" produces the following error:

Visual C++ 1.0 and 4.0

CXX0017: Error: symbol 'PMYSTRUCT' not found

Visual C++ 2.x

CXX0034: Error: types incompatable with operator
However, putting a watch on "(MYSTRUCT *) &var2" is successful.

CAUSE

The typedef declares a new name for a type, but it does not define a new type. The typecast attempted in the debugger requires the name of a defined type.

RESOLUTION

Use the defined type in the typecast, rather than using the name declared with the typedef.

Modification Type:MajorLast Reviewed:12/2/2003
Keywords:kbBug kbDebug kbide kbprb KB119501