2 Stimmen

(C++) Fehler: Erwarteter Primärausdruck vor dem ';' Token

Mein Compiler beschwert sich und wirft einen Fehler (siehe Titel) über diesen Code aus:

int toLevel(int xp)
{
    int points = 0;
    int level = 1;
    for(; level < MAX_LEVEL; level++)
    {
        points += floor(level + 300*pow(2, level/7.));
        if(xp < points)
        {
            break;
        }
    }
    return level;
}

Der Fehler liegt in der for(; level < MAX_LEVEL; level++) Zeile, und das vollständige Fehlerprotokoll sieht so aus (das ist Zeile 50, zur Referenz):

In function 'int toLevel(int)':
50    error: erwarteter Primärausdruck vor dem ';' Token
50    error: erwartet ')' vor dem ';' Token
50    error: erwartet ';' vor ')' Token
48    warning: unbenutzte Variable 'points'
59    error: erwartet '}' am Ende der Eingabe
59    warning: keine Rückgabeanweisung in einer Funktion, die nicht void zurückgibt
=== Build finished: 4 errors, 2 warnings ===

Irgendwelche Ideen? Ich nehme an, ich habe irgendwo eine Klammer nicht geschlossen, aber ich kann sie einfach nicht finden. Da ich davon ausgehe, dass dies der Fall sein könnte, hier ist der vollständige Code für diese Datei:

#include 
#include 
#include 
#include 
#include 

using namespace std;

#define MAX_LEVEL 99;

#include "main.h"

int main()
{
    Player player;
    loadSkills(player);
    if(!loadGame(player))
    {
        cout << "Es sieht so aus, als ob du zum ersten Mal spielst." << endl;
        cout << "Wie ist dein Name?: ";
        cin >> player.name;
    }
    cout << "Hallo " << player.name << ", du bist Level " << toLevel(player.xp) << endl;
    //TODO
    return 0;
}

//Gibt true zurück, wenn geladen, sonst false
bool loadGame(Player player)
{
    //TODO
    return false;
}

void loadSkills(Player player)
{
    vector skills;
    skills.push_back((Skill){"Melee"});
    skills.push_back((Skill){"Woodcutting"});
    skills.push_back((Skill){"Firemaking"});
    skills.push_back((Skill){"Fishing"});
    skills.push_back((Skill){"Cooking"});
    player.skills = skills;
}

int toLevel(int xp)
{
    int points = 0;
    int level = 1;
    for(; level < MAX_LEVEL; level++)
    {
        points += floor(level + 300*pow(2, level/7.));
        if(xp < points)
        {
            break;
        }
    }
    return level;
}

und die main.h, auf die verwiesen wird:

#ifndef MAIN_H_INCLUDED
#define MAIN_H_INCLUDED

vector &split(const string &s, char delim, vector &elems) {
    stringstream ss(s);
    string item;
    while(getline(ss, item, delim)) {
        elems.push_back(item);
    }
    return elems;
}

//Methode zur Vereinfachung
vector split(const string &s, char delim) {
    vector elems;
    return split(s, delim, elems);
}

struct Skill
{
    string name;    //Der Name der Fähigkeit
};

struct Player
{
    int health;             //Die aktuelle Gesundheit des Spielers
    int xp;                 //Die Erfahrungspunkte des Spielers
    int maxhealth;          //Die maximale Gesundheit des Spielers
    vector skills;   //Die dem Spieler zur Verfügung stehenden Fähigkeiten
    string name;            //Der Name des Spielers
};

class InteractOption
{
    public:
    void doAction();//Was passieren soll
    bool succeeded; //Wenn true, erhalten sie die Erfahrungspunkte dafür.
    int xp;         //Menge an Erfahrungspunkten, die erhalten werden
    Skill skill;    //Fähigkeit, in der Erfahrungspunkte gesammelt werden
    string name;    //"Hacken"/"Angreifen"/etc
};

class WorldObject
{
    public:
    InteractOption interactOption;  //Die Option zur Interaktion mit dem Objekt.
                                    //Kann null sein (d.h. nicht interagierbar)
    string name;                    //"Baum"/"Goblin"/etc
};

bool loadGame(Player);
void loadSkills(Player);
int toLevel(int);

#endif // MAIN_H_INCLUDED

7voto

hmjd Punkte 118293

Entfernen Sie das nachgestellte Semikolon aus dem Makro MAX_LEVEL:

#define MAX_LEVEL 99;

denn wenn das Makro in der for Schleife ersetzt wird, wird es zu:

for(; level < 99;; level++)

was eine ungültige Syntax ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X