代码之家  ›  专栏  ›  技术社区  ›  Steve450

警告:C中不兼容的指针类型[-Wincompatible指针类型]

  •  0
  • Steve450  · 技术社区  · 2 年前

    memUnit * newUnit = (char*) freeUnit + sizeof(memUnit);
    

    一切都像这样正常工作,但我该如何修复警告?

    2 回复  |  直到 2 年前
        1
  •  3
  •   Jon Green    2 年前

    您正在尝试分配一个 char * 变成一个 memUnit * .

    现在,我不知道是什么 memUnit

    如果 freeUnit 声明为 内存单元*

    memUnit *newUnit = freeUnit + 1; memUnit *newUnit = &freeUnit[1];

    如果 自由单位

    如果是带有 大小与相同 ,并且您已经检查它是否正确对齐,您可以将其投射到 内存单元*

        2
  •  1
  •   Vlad from Moscow    2 年前

    除了void*类型之外,没有从指向char*类型的指针隐式转换到任何其他指向对象类型的指针。

    所以你要么写

    memUnit * newUnit = ( memUnit * )( (char*) freeUnit + sizeof(memUnit) );
    

    memUnit * newUnit = ( void * )( (char*) freeUnit + sizeof(memUnit) );