0

学校向けのクイズプログラムを作成しようとしています。私のコードは次のとおりです

main.cpp:

#include <cmath>
#include <ctime>
#include <string>

#include "getQuestion.h"

using namespace std;

int main() {
int mainMenuChoice;
ifstream Bibliography;
//string easyBib;
ifstream easyBib;
ifstream inputFile;

cout << "Quiz Menu\n\n";
cout << "1. Play Game!\n";
cout << "2. Bibliography\n";
cout << "3. Developer Info\n";
//cout << "4. Admin Menu\n";
cout << "4. Exit\n";
cout << "Menu Choice: ";
cin >> mainMenuChoice;

switch (mainMenuChoice) {
    case 1:
        break;
    case 2:
        inputFile.open("Bib.txt");
        inputFile >> easyBib;
        cout << easyBib << endl;
        break;
    case 3:

        break;
    /*case 4:
        break;*/
    case 4:
        cout << "Thank you for playing!" << endl;
        return(0);
    default:
        cout << "Sorry, Invalid Choice!\n";
        return(0);

}
return(0);
}

getQuestion.h:

#ifndef getQuestion
#define getQuestion

int getQuestion () {

ifstream Question;
ifstream Linker;                //Linker for 2 flies
ifstream Answer;
string A;
string L;               //Linker for 2 flies
string Q;
int line;


Question.open("Question.txt");
Question >> Q;
Answer.open("Answer.txt");
Answer >> A;
Linker.open("Linker.txt");
Linker >> L;


getline(Question,line);
number_of_lines++;
#endif

コンパイラエラー:

Build Social Studies of project Social Studies with configuration Debug

CompileC "build/Social Studies.build/Debug/Social Studies.build/Objects-normal/x86/main.o" main.cpp normal x86_64 c++ com.apple.compilers.gcc.4_2
cd "/Users/student/Desktop/Social Studies"
setenv LANG en_US.US-ASCII
/Developer/usr/bin/gcc-4.2 -x c++ -arch x86_64 -fmessage-length=0 -pipe -Wno-trigraphs -fpascal-strings -fasm-blocks -O0 -Wreturn-type -Wunused-variable -isysroot /Developer/SDKs/MacOSX10.6.sdk -mfix-and-continue -fvisibility-inlines-hidden -mmacosx-version-min=10.6 -gdwarf-2 -iquote "/Users/student/Desktop/Social Studies/build/Social Studies.build/Debug/Social Studies.build/Social Studies-generated-files.hmap" "-I/Users/student/Desktop/Social Studies/build/Social Studies.build/Debug/Social Studies.build/Social Studies-own-target-headers.hmap" "-I/Users/student/Desktop/Social Studies/build/Social Studies.build/Debug/Social Studies.build/Social Studies-all-target-headers.hmap" -iquote "/Users/student/Desktop/Social Studies/build/Social Studies.build/Debug/Social Studies.build/Social Studies-project-headers.hmap" "-F/Users/student/Desktop/Social Studies/build/Debug" "-I/Users/student/Desktop/Social Studies/build/Debug/include" "-I/Users/student/Desktop/Social Studies/build/Social Studies.build/Debug/Social Studies.build/DerivedSources/x86_64" "-I/Users/student/Desktop/Social Studies/build/Social Studies.build/Debug/Social Studies.build/DerivedSources" -c "/Users/student/Desktop/Social Studies/main.cpp" -o "/Users/student/Desktop/Social Studies/build/Social Studies.build/Debug/Social Studies.build/Objects-normal/x86_64/main.o"

In file included from /Users/student/Desktop/Social Studies/main.cpp:8:
/Users/student/Desktop/Social Studies/getQuestion.h:4: error: expected unqualified-id before 'int'
/Users/student/Desktop/Social Studies/getQuestion.h:4: error: expected `)' before 'int'

ありがとう。また、意味をなさないでください、私はプログラミングに不慣れです!私はMacOSXv。10.6.8とXCode3.2.6を使用しています。誰かが私に何かをアップグレードするように頼む前に、私は管理者ではありません(これは学校のラップトップです)

編集:みんなの助けをありがとう!コードに他の問題がありますか(パフォーマンスに関連していますか?)

4

2 に答える 2

2
#define getQuestion

int getQuestion () {

ここで起こっている#defineのは、「getQuestion」という文字列を空白にしてから、今では意味をなさないものint getQuestion()に変換されたものを使用することです.. @chrisによる良いキャッチ。int ()これがエラーの原因です。これを修正すると、指摘された他の問題が発生することが予想されます。

マクロを作成するときの良い経験則は、別の名前 (この場合は関数) と一致する可能性がほとんどないようにすることです。これらは通常、これを支援するためと、マクロを扱っていることを明確に見せるためのすべて大文字です。GETQUESTION_Hしたがって、この場合、たとえばインクルード ガードに名前を付けることができます。

于 2012-12-16T01:29:37.340 に答える
0

コンパイラ エラーの問題は、#define が関数と同じ名前であることです。プリプロセッサ ステートメントを次のように変更すると、

#ifndef getQuestion_h
#define getQuestion_h

あなたのコンパイルエラーは解決されます。

他のコンパイラ エラーの原因となるエラーは他にも多数ありますが、これは宿題なので、最初にそれらを解決するようにしてください。

スタイルの問題として、関数宣言は .h ファイルにのみ含める必要があります。getQuestion 関数本体は、getQuestion.cpp などの別のファイルで定義する必要があります。

于 2012-12-16T01:31:21.877 に答える