C ++期望char之前的primary-expression(头文件)

时间:2013-01-27 18:46:23

标签: c++

ISBN.h

int isValid(const char str[]);
int isRegistered(FILE* fp, const char str[], char area[], char publisher[], char title[]); 

错误:

ISBN.h:2:18: error: FILE was not declared in this scope
ISBN.h:2:24: error: fp was not declared in this scope
ISBN.h:2:28: error: expected primary-expression before const
ISBN.h:2:46: error: expected primary-expression before char
ISBN.h:2:59: error: expected primary-expression before char
ISBN.h:2:77: error: expected primary-expression before char
ISBN.h:2:89: error: expression list treated as compound expression in initializer [-fpermissive]   

我不确定我是否理解错误,因为我有另一个头文件,其中包含相同类型的参数,不会产生任何错误:

ISBNPrefix.h

FILE* open(const char filename[]);
int isRegistered(FILE* fp, int area);
int minNoDigits(FILE* fp, int area);
int isRegistered(FILE* fp, int area, const char publisher[]);
int close(FILE* fp);
  1. 这些功能原型由我们的教授提供给我们。
  2. isRegistered定义了三次,但是参数数量不同,所以当你在main中使用带有X个参数的函数时,它是否只使用带有所述参数的相应版本?
  3. 我收到与我的ISBN.cpp相对应的第二组错误,其中包含我的ISBN.h

    ISBN.cpp:在函数int isRegistered(FILE *,const char *,char *,char *,char *)中: ISBN.cpp:36:89:错误:int isRegistered(FILE *,const char *,char *,char *,char *)重新声明为不同类型的符号 ISBN.h:2:5:错误:以前的int声明是注册

  4. ISBN.cpp

    #include "ISBN.h"
    #include <cstring>
    #include <iostream>
    #include <cstdio>
    using namespace std;
    
    int isValid(const char str[])
    {
    
    }
    
    int isRegistered(FILE* fp, const char str[], char area[], char publisher[], char title[])
    {
    
    } 
    

1 个答案:

答案 0 :(得分:2)

FILE<cstdio>标题的一部分,在您开始在标题中使用它之前,它不会包含在内。这就像#include <iostream>使用std::cout的方式一样。您通常应该在每个文件的基础上包含所需的每个标头,而不是依赖其他文件来包含它们。

另一件需要注意的事情是,您通常应该先处理第一个列出的错误。一个错误可能会导致无意义错误的连锁反应,并最终导致您轻易偏离轨道。