得到错误"错误:预期表达式......"当我尝试用C中的参数调用函数时

时间:2015-02-05 09:42:13

标签: c function call declare

我的代码如下:

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'错误之前得到了一个“预期的错误表达式。我已经尝试了很多不同的语法变体,但我仍然遇到这个错误,或者更多错误。我知道当我调用函数时,我只需要让参数在同一范围内,并事先声明函数,我以为我做了。

我只是希望能够无错误地调用该函数。

4 个答案:

答案 0 :(得分:1)

代码中的问题是,如果没有前向声明,第一个 assummed 声明实际上被解释为函数调用[函数的隐式声明]。在那里,File test被解释为实际参数,而不是参数。在那里,FILE是保留关键字而File test没有有效参数,则抛出错误。

在函数声明的代码中,将th3声明移到main()之外,请指定函数的返回类型并更正第一个参数的类型。

更改

 doSomething(File test, char line[50]);

 int doSomething(File * test, char line[50]);

注意:始终启用[并注意]编译器警告。启用警告后,编译器应显示警告

  

警告:隐含的功能声明

在这些情况下。

此外,通话错误。 line[50]将在您的数组之后引用该字符。将通话更改为:

doSomething(fp, line); // call function

答案 1 :(得分:0)

doSomething(File test, char line[50]);

应该是

doSomething(File *test, char line[50]);

我看到函数fopen()返回FILE *并且您试图将返回值传递给函数doSomething(),因此第一个参数应该是FILE *类型而不是{ {1}}

FILE

答案 2 :(得分:0)

功能声明应该是这样的。

     doSomething(File *, char); 

答案 3 :(得分:0)

在C中打开文件时,会返回指向文件开头的指针。这是你应该传递的,而不是实际的文件。 正如Gopi所说的那样是正确的。