C Undeclared(首次使用此功能)

时间:2017-10-31 12:08:52

标签: c declaration

我收到了这个奇怪的错误:

app_server.c: In function ‘wasFeedRead’:
app_server.c:269:14: error: ‘tmp’ undeclared (first use in this function)
     readers* tmp;
              ^
app_server.c:269:14: note: each undeclared identifier is reported only once for each function it appears in

我的wasFeedRead函数只包含这几行:

int wasFeedRead(char* loginName, readers* readers){
    readers* tmp;
    return 0;
}

阅读器的定义方式如下:

struct readers {
    char *user;
    struct readers *next;
};
typedef struct readers readers;

错误位于readers* tmp;行,而不是int wasFeedRead(char* loginName, readers* readers)行,因此读者的声明应该是正确的。

我真的很沮丧这个错误,有谁知道如何解决这个问题?我已经尝试改变Var了。名字,但没有改变任何事情(Suprise Suprise)。
提前致谢

2 个答案:

答案 0 :(得分:4)

函数参数名称readers隐藏了类型名称readers

int wasFeedRead(char* loginName, readers* readers){
    readers* tmp;
    return 0;
}

因此,在函数中,名称readers被视为变量。使用其他名称作为参数。

或者在声明中使用精心设计的类型名称

    struct readers* tmp;

答案 1 :(得分:0)

参数名称是阴影函数体内的类型名称。 可以通过重命名类型或参数名来解决它。

示例:

struct readers {
    char *user;
    struct readers *next;
};
typedef struct readers Readers;

这里的类型是读者,然后它不会与作为参数名称的读者碰撞。

int wasFeedRead(char* loginName, Readers* readers){
    Readers* tmp;
    return 0;
}