C++ '{' 标记之前不允许有函数定义吗?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/22185288/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-27 23:58:46  来源:igfitidea点击:

Is a function definition not allowed here before a '{' token?

c++

提问by user3233136

I am creating a game, and I have this code. However, it is not working:

我正在创建一个游戏,我有这个代码。但是,它不起作用:

#include<iostream>
using namespace std;

const int MAX_ITEMS = 100;
bool running = 1;
int playerInfo[2];
void titleFunc();
int userInput = 0;

void newGameFunc();

int main() {
    titleFunc();
    newGameFunc();
    int playerLocation = 0;
    while (running) {

    }

    if (playerLocation == 1) {
        cout << "You are in a dungeon. You have just woke up from escaping the execution of your father. You see a pathway to the North, and a large gaping hole to the South.\n";
        cout << "1. Go South\n 2. Go North";
        cin >> userInput;
        if (userInput == 1) 
            playerLocation = 2;
        else 
            if (userInput == 2) 
                playerLocation = 3;
    }
    return 0;

    titleFunc() {
        cout << "\t\t\t\t---Fantasee---\n\n\n";
        cout << "\t\t\t\t     1:Play\n";

        cin >> userInput;

        if (userInput == 1) {
            newGameFunc();
        }
        else {
            running = 0;
        }
        return;
    }

    newGameFunc() {
        cout << "Welcome to Fantasee, a world of adventure and danger. \n";
        cout << "To begin, please enter your gender: \n 1. Male 2. Female";
        cin >> userInput;
        playerInfo[0] = userInput;

        cout << "And what class do you wish to be? \n 1. Wizard 2. Archer 3. Warrior 4. Trickster 5. Knight 6. Assassin";
        cin >> userInput;
        playerInfo[1] = userInput;
        playerLocation = 1;
        return;
    }
}

}
}

And I am getting the error message:

我收到错误消息:

g++ Main.cpp -o Main
Main.cpp: In function ‘int main()':
Main.cpp:36:17: error: expected ‘;' before ‘{' token
Main.cpp:67:1: error: expected ‘}' at end of input

Edit: Wrong Error Message
Edited code to current.

g++ Main.cpp -o Main
Main.cpp:在函数“int main()”中:
Main.cpp:36:17:错误:预期的“;” 在 '{' 标记
Main.cpp:67:1 之前:错误:在输入结束时预期为 '}'

编辑:错误的错误消息 将
代码编辑为当前。

回答by Geries

You are declaring the function bodies inside the main function, which is not valid. Also you've been using too many '}'-s.

您在 main 函数中声明了函数体,这是无效的。此外,您使用了太多的 '}'-s。

Your code should look more like this:

您的代码应该更像这样:

#include<iostream>
using namespace std;

const int MAX_ITEMS = 100;

bool running = 1;

int playerInfo[2];

void titleFunc();

int userInput = 0;
int playerLocation = 0;

void newGameFunc();

void titleFunc() {
    cout << "\t\t\t\t---Fantasee---\n\n\n";
    cout << "\t\t\t\t     1:Play\n";

    cin >> userInput;

    if (userInput == 1) {

        newGameFunc();

    }
    else {
        running = 0;
    }
    return;
}

void newGameFunc() {
    cout << "Welcome to Fantasee, a world of adventure and danger. \n";
    cout << "To begin, please enter your gender: \n 1. Male 2. Female";
    cin >> userInput;
    playerInfo[0] = userInput;

    cout << "And what class do you wish to be? \n 1. Wizard 2. Archer 3. Warrior 4. Trickster 5. Knight 6. Assassin";
    cin >> userInput;
    playerInfo[1] = userInput;
    playerLocation = 1;
    return;
}

int main() {

    titleFunc();

    newGameFunc();

    while (running) {

    }
    if (playerLocation == 1){
        cout << "You are in a dungeon. You have just woke up from escaping the execution of your father. You see a pathway to the North, and a large gaping hole to the South.\n";
        cout << "1. Go South\n 2. Go North";
        cin >> userInput;
        if (userInput == 1) playerLocation = 2;
        else if (userInput == 2) playerLocation = 3;
    }
    return 0;
}