0

国际标准书号

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]   

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

ISBN前缀.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被定义了3次,但参数数量不同,所以当你使用main带有X个参数的函数时,它会只使用带有所述参数的相应版本吗?
  3. 我得到与 my 对应的第二组错误,ISBN.cpp其中包括 my 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 isRegistered 的先前声明

国际标准书号.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[])
{

} 
4

1 回答 1

2

FILE是标题的一部分,<cstdio>在您开始在标题中使用它之前不包含它。这就像你必须如何#include <iostream>使用std::cout. 您通常应该在每个文件的基础上包含您需要的每个标题,而不是依赖其他文件为您包含它们。

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

于 2013-01-27T18:56:00.247 回答