我在尝试编译代码时遇到两个编译错误,但我找不到问题所在。有人可以帮忙解决一些问题吗?
error: old-style parameter declarations in prototyped function definition
error: 'i' undeclared (first use in this function)
代码:
void printRecords (STUREC records[], int count)
STUREC records[ARRAY_MAX];
int count;
int i;
{
printf("+---------------------------+--------+--------+--------+--------+--------+--------+---------+-------+\n");
printf("| Student Name | ID | Test 1 | Test 2 | Proj 1 | Proj 2 | Proj 3 | Average | Grade |\n");
printf("+---------------------------+--------+--------+--------+--------+--------+--------+---------+-------+\n");
for (i = 0; i < count; i++)
{
size_t j;
printf ("|%s|%d|%d|%d|%d|%d|%d|%f|%c|", records[i].name, records[i].id, records[i].score1,
records[i].score2, records[i].score3, records[i].score4, records[i].score5,
records[i].ave, records[i].grade);
}
return;
}
答案 0 :(得分:1)
不是针对这个特定问题,但如果您碰巧遇到此错误,请检查您是否在声明末尾没有遗漏分号,因为这就是我遇到的情况。
答案 1 :(得分:0)
如果您想使用old style C parameter declarations,则需要执行此操作:
void printRecords(records, count)
STUREC records[ARRAY_MAX];
int count;
{
int i;
// ... rest of the code ...
}
但这不是一种好的做法,可能会使您的代码难以阅读。有些编译器甚至停止支持这种语法。
其他评论/答案是说你重新声明(并因此隐藏)你的函数体中的函数参数,但这不是你想要做的(否则你有效丢失传入的参数。)
如果您定义这样的函数:
void fxn(int num) {
int num;
num = num;
}
num
引用什么:参数或局部变量?
要么这样做:
void printRecords(records, count)
STUREC records[ARRAY_MAX];
int count;
{
int i;
// ... rest of the code ...
}
或者这样做:
void printRecords(STUREC records[], int count)
{
int i;
// ... rest of the code ...
}
但不要试图同时做两者或两者的混合。