visual-studio - Visual Studio 警告 C4133

标签 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)

最佳答案

你的结构应该是这样的:

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

像这样声明和使用:
PointNode *pPointHead; // remove struct keyword
pPointHead->next;

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

关于visual-studio - Visual Studio 警告 C4133,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7086254/

相关文章:

visual-studio - 为 Visual Studio 指定不同的命令提示符

c++ - 将 C++ 代码从 GCC 移植到 MSVC 的良好做法?

时间:2019-03-17 标签:c++: Defferentiate templates in an if statement

c - 如何使用 C(不是 C++)在结构的所有实例中拥有一个 const 成员?

c++ - C 与 C++ 中的 typedef 和结构命名空间

visual-studio - 多个可部署项目的 Visual Studio 解决方案结构

visual-studio - 在 Visual Studio 中在调试和 Release模式之间切换的键盘快捷键

c# - 如何使用 Collection View 的简单列表

c++ - 如何在 C++ 中对 vector 进行切片并分配给自身?

c++ - 为什么可以在没有定义的情况下使用枚举类型