Visual Studio警告C4133

时间:2011-08-16 23:17:46

标签: visual-studio visual-c++ struct compiler-warnings

在Visual Studio 2005中收到一个奇怪的警告:

警告C4133:'=':不兼容的类型 - 从'PointNode *'到'PointNode *'

结构定义:

struct PointNode {
  int x;
  int y;
  struct PointNode *next;
};

声明和用法:

struct PointNode* pPointHead;
...

pPointHead = pPointHead->next;

警告本身说它们是相同的类型,为什么会抱怨?

(遗憾的是我无法标记C4133)

1 个答案:

答案 0 :(得分:5)

您的结构应如下所示:

struct PointNode {
  int x;
  int y;
  PointNode *next; // remove struct keyword
};

声明并使用如下:

PointNode *pPointHead; // remove struct keyword
pPointHead->next;

当您添加struct关键字时,编译器会认为您声明了一个具有相同名称的新的不同结构。