在内部结构的C中返回类型时不兼容的类型

时间:2017-10-26 21:13:48

标签: c pointers struct

我有一个结构,我想在编译时静态分配,但我不知道如何返回指向内部结构的指针。

typedef struct
{
  int d;
} innerStruct;

typedef struct
{
  int a;
  int b;
  int c;
  innerStruct inner;

} myStruct;

static myStruct m1;

innerStruct * getMyStructPtr()
{
  myStruct * ptr = &m1;
  return ptr->inner;
}

int main()
{
  innerStruct * retval = getMyStructPtr();
  return 0;
}

链接到在线编译器:https://onlinegdb.com/SJAFJCy0Z

1 个答案:

答案 0 :(得分:3)

检查数据类型!!

您的函数承诺返回innerStruct *,而您的代码会尝试返回innerStruct。它们既不相同也不兼容。修复或正确使用它。

在函数调用之后,您可能想要编写

 return &(ptr->inner);  // return type innerStruct *