PRB: Error CXX0017 or CXX0034 for typedef
Article ID: 119501
Article Last Modified on 12/2/2003
APPLIES TO
- The Visual Workbench Integrated Debugger, when used with:
- Microsoft Visual C++ 1.0 Professional Edition
- Microsoft Visual C++ 2.0 Professional Edition
- Microsoft Visual C++ 4.0 Standard Edition
- Microsoft Visual C++ 5.0 Enterprise Edition
- Microsoft Visual C++ 5.0 Professional Edition
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.
Keywords: kbbug kbide kbdebug kbprb KB119501