C &引用;旧式参数声明;错误
在试图编译代码时,我遇到了两个编译错误,但我找不到真正的问题所在。谁能帮我解释一下吗C &引用;旧式参数声明;错误,c,C,在试图编译代码时,我遇到了两个编译错误,但我找不到真正的问题所在。谁能帮我解释一下吗 error: old-style parameter declarations in prototyped function definition error: 'i' undeclared (first use in this function) 代码: void打印记录(STUREC记录[],整数计数) STUREC记录[ARRAY_MAX]; 整数计数; int i; { printf(“+------
error: old-style parameter declarations in prototyped function definition
error: 'i' undeclared (first use in this function)
代码:
void打印记录(STUREC记录[],整数计数)
STUREC记录[ARRAY_MAX];
整数计数;
int i;
{
printf(“+-------------------------------+-----------+-----------++-----------+-----------+-----------+------+\n”);
printf(“学生姓名| ID |测试1 |测试2 |项目1 |项目2 |项目3 |平均|成绩|\n”);
printf(“+-------------------------------+-----------+-----------++-----------+-----------+-----------+------+\n”);
对于(i=0;i
您有
void printRecords (STUREC records[], int count)
STUREC records[ARRAY_MAX];
int count;
int i;
{
但我想你想要:
void printRecords (STUREC records[], int count)
{
int i;
编辑:
感谢callyalater注意到函数中参数的重新声明…如果要使用,您需要执行以下操作:
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 ...
}
或者这样做:
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 ...
}
但不要试图同时做这两件事或两者兼而有之。不是针对这个特定的问题,但是如果您碰巧遇到这个错误,请检查您的声明末尾是否遗漏了分号,因为我就是这样做的。看起来您错放了
{
printRecords函数定义处的括号..开头{
应该遵循函数参数列表。啊!谢谢大家…现在我收到一个错误,说在我的函数中“printRecords”“count”被重新声明为不同类型的sybole,并带有一个注释,说明我以前的定义在哪里。但是我有void printRecord(STUREC records[],int count)
后接一个本地声明int count;
…这是错误代码所指向的两行,但我把它们都放在int,那么错误是指什么呢?另外,i
不是printRecords
中的参数,老式函数参数意味着您没有将类型放在函数p中arameter declarations.ah!谢谢大家…现在我得到一个错误,我的函数“printRecords”“count”被重新声明为一种不同类型的sybole,并带有一个注释,说明我以前的定义在哪里。但是我有void printRecord(STUREC records[],int count)
后面是一个局部声明int count;
…这是错误代码指向的两行,但我把它们都指向int,那么错误是指什么呢?@mame98您的示例并不像您想象的那样。您将参数重新声明为局部变量,从而隐藏参数并使其无法访问是的,我刚刚把我的{向上移动了,哈哈,它处理好了。我现在有一个错误,说我在printRecords中的计数被重新声明为一个不同的符号…错误指向第98行和第94行。有什么线索吗?@seanncurtis在{
但在int i;
之前。请参见我答案中的最后一个示例。哦,我明白了,如果您在()启动该函数时,您不需要在本地声明中声明它?答对了!否则,该函数不知道您正在谈论的是哪一个。非常有意义,谢谢。我现在收到一个错误,我在学习c的4个月内从未见过。它说“error:1d returned exit status”…它没有引用行或任何东西不过。