Qut*_*uto 2 c struct compiler-errors declaration
所以,我得到了一个函数,我声明一个已填充的结构,并且还要声明一个新函数.当我在顶部声明新函数时它起作用,当我在逗号(,)之后将它声明在同一行时,它可以工作,但它不适用于底线.有什么解释吗?提前致谢.
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是数组client的名称隐藏了类型的名称client.
client client[MAX_CLIENT];
client goodclient[MAX_CLIENT];
Run Code Online (Sandbox Code Playgroud)
因此,在第二个声明中,编译器将名称client视为数组的名称.
对不同的实体使用相同的名称不是一个好主意.
使编译器编译声明的最简单方法是重命名数组.
或者,如果类型client是typedef具有相同名称的结构类型,那么您可以编写例如
client client[MAX_CLIENT];
struct client goodclient[MAX_CLIENT];
Run Code Online (Sandbox Code Playgroud)
另一种方法是交换声明
client goodclient[MAX_CLIENT];
client client[MAX_CLIENT];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |