我有个奇怪的错误:

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)行,因此读卡器的声明应该是正确的。。
我真的很失望这个错误,有人知道如何解决这个问题吗?我已经试着改变了变量名,但是没有改变任何东西(惊讶的惊喜)。
提前谢谢

最佳答案

参数名正在函数体中着色类型名。
可以通过重命名类型或参数名来解决此问题。
例子:

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

这里的类型是Readers,然后它不会与参数名Readers冲突。
int wasFeedRead(char* loginName, Readers* readers){
    Readers* tmp;
    return 0;
}

10-05 20:49