0

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は3回定義されていますが、パラメーターの量が異なるため、mainX個のパラメーターで関数を使用する場合、そのパラメーターで対応するバージョンを使用するだけでしょうか。
  3. 私に対応する2番目のエラーセットが表示されます。これには次の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の以前の宣言isRegistered

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[])
{

} 
4

1 に答える 1

2

FILEヘッダーの一部であり、<cstdio>ヘッダーで使用する前は含まれていません。#include <iostream>を使用する方法と同じですstd::cout。通常、必要なすべてのヘッダーをファイルごとにインクルードする必要があり、それらをインクルードするために他のファイルに依存しないでください。

注意すべきもう 1 つの点は、通常、最初にリストされたエラーを他のエラーより先に処理する必要があるということです。1 つのエラーが無意味なエラーの連鎖反応を引き起こし、非常に簡単に軌道から外れてしまう可能性があります。

于 2013-01-27T18:56:00.247 に答える