在Visual Studio 2005中收到一个奇怪的警告:
警告C4133:'=':不兼容的类型 - 从'PointNode *'到'PointNode *'
结构定义:
struct PointNode {
int x;
int y;
struct PointNode *next;
};
声明和用法:
struct PointNode* pPointHead;
...
pPointHead = pPointHead->next;
警告本身说它们是相同的类型,为什么会抱怨?
(遗憾的是我无法标记C4133)
答案 0 :(得分:5)
您的结构应如下所示:
struct PointNode {
int x;
int y;
PointNode *next; // remove struct keyword
};
声明并使用如下:
PointNode *pPointHead; // remove struct keyword
pPointHead->next;
当您添加struct关键字时,编译器会认为您声明了一个具有相同名称的新的不同结构。