为什么我的代码给`结构返回值与函数类型`编译错误不匹配?

时间:2017-08-11 10:54:40

标签: c

我的代码为:

typedef struct t
{
    uint8 a[100];

}t;

t tt; //object of the struct
f(&tt); //some file calling the func

//function body in some file
uint8 *f(const struct t *ptr)
{
    return ptr->a;
}

当我尝试构建时,我收到错误:

  

返回值类型与函数类型不匹配。

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

您需要使用该类型的名称,代码中的任何位置都没有定义struct t类型,所以

uint8 *f(t *const tt);

应该是函数签名,当然我想你在实际代码中使用了有意义的名字。

另外,请注意我没有创建指针const,因为如果你返回一个指向结构的const指针的非const指针,那么可能会发生未定义的行为,当然替代

const uint8 *f(const t *const tt);

第二个const,只是阻止意外重新分配tt