Getting an error "error: expected expression before..." when I try to call a function with parameters in C
Getting an error "error: expected expression before..." when I try to call a function with parameters in C
我的代码如下:
FILE *test
char line[50];
fp = fopen(arg[5], "r");
doSomething(File test, char line[50]); // declare function
doSomething(fp, line[50]); // call function
我在 'FILE' 错误之前收到“预期的错误表达式”。我已经尝试了许多不同的语法变体,但我仍然遇到这个错误,或者更多错误。我在调用函数时意识到,我只需要将参数放在同一范围内并预先声明函数,我认为我已经做到了。
我只是希望能够无错误地调用该函数。
doSomething(File test, char line[50]);
应该是
doSomething(File *test, char line[50]);
我看到函数 fopen() returns FILE *
并且您正在尝试将 return 值传递给您的函数 doSomething()
所以第一个参数应该类型为 FILE *
而不是 FILE
void doSomething( FILE *f,char a[])
{
// Do your stuff
}
int main()
{
char b[100] = "";
FILE *fp = fopen("file","mode");
doSomething(fp,b);
}
函数的声明应该是这样的
doSomething(File *, char);
您的代码中的问题是,如果没有前向声明,第一个 assummed 声明实际上被解释为函数调用 [函数的隐式声明]。在那里,File test
被解释为 实际参数 ,而不是参数。在那里,FILE
是保留关键字,而 File test
没有有效参数,将抛出错误。
在函数 声明 的代码中,将 th3 声明移到 main()
之外,请指定函数的 return 类型并更正第一个参数。
改变
doSomething(File test, char line[50]);
到
int doSomething(File * test, char line[50]);
注意:始终启用[并注意]编译器警告。启用警告后,您的编译器应该会向您显示警告
warning: implicit declaration of function
在这些情况下。
另外,调用错误。 line[50]
将引用数组后面的字符。将调用更改为:
doSomething(fp, line); // call function
当您在 C 中打开文件时,将返回指向文件开头的指针。这是您应该传递的内容,而不是实际文件。
右边是Gopi建议的。
我的代码如下:
FILE *test
char line[50];
fp = fopen(arg[5], "r");
doSomething(File test, char line[50]); // declare function
doSomething(fp, line[50]); // call function
我在 'FILE' 错误之前收到“预期的错误表达式”。我已经尝试了许多不同的语法变体,但我仍然遇到这个错误,或者更多错误。我在调用函数时意识到,我只需要将参数放在同一范围内并预先声明函数,我认为我已经做到了。
我只是希望能够无错误地调用该函数。
doSomething(File test, char line[50]);
应该是
doSomething(File *test, char line[50]);
我看到函数 fopen() returns FILE *
并且您正在尝试将 return 值传递给您的函数 doSomething()
所以第一个参数应该类型为 FILE *
而不是 FILE
void doSomething( FILE *f,char a[])
{
// Do your stuff
}
int main()
{
char b[100] = "";
FILE *fp = fopen("file","mode");
doSomething(fp,b);
}
函数的声明应该是这样的
doSomething(File *, char);
您的代码中的问题是,如果没有前向声明,第一个 assummed 声明实际上被解释为函数调用 [函数的隐式声明]。在那里,File test
被解释为 实际参数 ,而不是参数。在那里,FILE
是保留关键字,而 File test
没有有效参数,将抛出错误。
在函数 声明 的代码中,将 th3 声明移到 main()
之外,请指定函数的 return 类型并更正第一个参数。
改变
doSomething(File test, char line[50]);
到
int doSomething(File * test, char line[50]);
注意:始终启用[并注意]编译器警告。启用警告后,您的编译器应该会向您显示警告
warning: implicit declaration of function
在这些情况下。
另外,调用错误。 line[50]
将引用数组后面的字符。将调用更改为:
doSomething(fp, line); // call function
当您在 C 中打开文件时,将返回指向文件开头的指针。这是您应该传递的内容,而不是实际文件。 右边是Gopi建议的。