[英]Why can't I declare structure 2nd time in function?
因此,我得到了一个函数,该函数在其中声明一个已填充的结构,并且还想声明一个新函数。 当我在顶部声明新函数时,当我在逗号(,)之后的同一行中声明它时,它起作用,但在底行中却不起作用。 有什么解释吗? 提前致谢。
void CFilter(float avgprofit, int lines)
{
//client goodclient[MAX_CLIENT]; THIS WOULD COMPILE
client client[MAX_CLIENT], goodclient[MAX_CLIENT]; // THIS COMPILES
//client goodclient[MAX_CLIENT]; THIS WOULDN'T COMPILE
int i, amount = 0;
float userprofit;
for (i = 0; i <= lines; i++) {
userprofit = client[i].loses - client[i].wins;
if (userprofit >= avgprofit) {
client[i].goodclient = 1;
} else {
client[i].goodclient = 0;
}
}
}
问题在于数组client
的名称隐藏了类型client
的名称。
client client[MAX_CLIENT];
client goodclient[MAX_CLIENT];
因此,在第二个声明中,编译器将名称client
视为数组的名称。
对不同的实体使用相同的名称不是一个好主意。
使编译器编译声明的最简单方法是重命名数组。
或者,如果类型client
是具有相同名称的结构类型的typedef
,则可以编写例如
client client[MAX_CLIENT];
struct client goodclient[MAX_CLIENT];
另一种方法就是交换声明
client goodclient[MAX_CLIENT];
client client[MAX_CLIENT];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.