我收到了这个奇怪的错误:
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)。
提前致谢
答案 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;
}