Visual Studio предупреждение C4133 - PullRequest
5 голосов
/ 17 августа 2011

получение странного предупреждения в Visual Studio 2005:

предупреждение C4133: '=': несовместимые типы - от 'PointNode *' до 'PointNode *'

определение структуры:

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

декларация и использование:

struct PointNode* pPointHead;
...

pPointHead = pPointHead->next;

В самом предупреждении говорится, что они относятся к одному и тому же типу, зачем жаловаться?

(к сожалению, я не могу пометить C4133)

1 Ответ

5 голосов
/ 17 августа 2011

Ваша структура должна выглядеть следующим образом:

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

Объявите и используйте так:

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

Когда вы добавляете ключевое слово struct, компилятор считает, что вы объявляете новыйдругая структура с тем же именем.

...