Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Snowsong Junior JLI'ler
Alter: 37 Anmeldedatum: 15.05.2007 Beiträge: 53
Medaillen: Keine
|
Verfasst am: 18.05.2007, 00:40 Titel: Komischer Error bei Switch Schleife seit Visual C++ Express |
|
|
Hallo Leute,
ich programmier nach einer etwas längeren Pause wieder in C++
und habe mir dazu die Visual C++ 2005 Express Edition hergenommen.
Ich hab sie natürlich mit dem Windows Platform SDK etc erweitert
sodass rein weg alles gehn müsste was ich brauche.
Nun habe ich in meinen Game Loop wie immer eine Switch-Case
Anweisung und ich bekomm komische Errors die ich mir nicht erklären kann.
Hier der Code
CPP: | switch(Game_Status)
{
case GAME_INIT:
{
}
break;
case GAME_RE_INIT:
{
}
break;
case GAME_PRE_MENU:
{
}
break;
case GAME_MENU:
{
}
break;
case GAME_PRE_RUN:
{
}
break;
case GAME_RUN:
{
}
break;
}
|
Hier die Schönen Errors dazu
Zitat: |
.\Main.cpp(98) : error C2143: Syntaxfehler: Es fehlt ':' vor ';'
.\Main.cpp(98) : error C2143: Syntaxfehler: Es fehlt ';' vor ':'
.\Main.cpp(99) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'
.\Main.cpp(102) : error C2143: Syntaxfehler: Es fehlt ':' vor ';'
.\Main.cpp(102) : error C2143: Syntaxfehler: Es fehlt ';' vor ':'
.\Main.cpp(103) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'
.\Main.cpp(106) : error C2143: Syntaxfehler: Es fehlt ':' vor ';'
.\Main.cpp(106) : error C2143: Syntaxfehler: Es fehlt ';' vor ':'
.\Main.cpp(107) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'
.\Main.cpp(110) : error C2143: Syntaxfehler: Es fehlt ':' vor ';'
.\Main.cpp(110) : error C2143: Syntaxfehler: Es fehlt ';' vor ':'
.\Main.cpp(111) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'
.\Main.cpp(114) : error C2143: Syntaxfehler: Es fehlt ':' vor ';'
.\Main.cpp(114) : error C2143: Syntaxfehler: Es fehlt ';' vor ':'
.\Main.cpp(115) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'
.\Main.cpp(118) : error C2143: Syntaxfehler: Es fehlt ':' vor ';'
.\Main.cpp(118) : error C2143: Syntaxfehler: Es fehlt ';' vor ':'
.\Main.cpp(119) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'
|
Nun was könnte ich dagegen unternehmen?
Vor diesem Code kann es nicht sein da ich mit einer leeren
Switch Anweisung keine Errors bekomme.
Ich bedanke mich schonmal im Voraus.
PS.: Ich bins der alte Samus_Aran wenn mich noch jemand kennen sollte
kann nur aus Privaten Gründen den Namen nich mehr ab leider und würde mich freuen wenn irgendjemand den alten Account "Samus_Aran" löschen
könnte. Möchte ja nicht das Forum mit toten Accounts blockieren :( |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 18.05.2007, 01:28 Titel: |
|
|
Account wird man nicht löschen können, weil dann auch die Beiträge gelöscht würden und dann viele Threads keinen SInn mehr machen würden.
Ich tippe darauf, das du irgendwo ein : statt ein ; gemacht hast. Erkennt man ja kaum. Evtl. einfach mal im Quellcode suchen. Sollte man schnell finden.
Achja, bitte Cpp statt Code Tags benutzen. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
Snowsong Junior JLI'ler
Alter: 37 Anmeldedatum: 15.05.2007 Beiträge: 53
Medaillen: Keine
|
Verfasst am: 18.05.2007, 01:50 Titel: |
|
|
Hab alles schon durchgeschaut ob auch nur irgendwo : oder ; vertauscht
ist, aber dem ist nicht so.
Wenn ich es so lasse:
CPP: | switch(Game_Status)
{
}
|
ist alles in Ordnung sobald ich die erste case Anweisung gebe
fangen die Fehler an...
An Unicode oder so kann das aber nich liegen oder? |
|
Nach oben |
|
|
David Super JLI'ler
Alter: 39 Anmeldedatum: 13.10.2005 Beiträge: 315
Medaillen: Keine
|
Verfasst am: 18.05.2007, 05:39 Titel: |
|
|
Vielleicht sind die Konstanten (oder was du auch verwendest) nicht definiert oder verfügbar.
Und nein, was sollte das mit Unicode zu tun haben?! |
|
Nach oben |
|
|
valentin_ Mini JLI'ler
Alter: 34 Anmeldedatum: 16.07.2006 Beiträge: 28 Wohnort: Graz Medaillen: Keine
|
Verfasst am: 18.05.2007, 07:38 Titel: |
|
|
Das ganze sollte so funktionieren:
CPP: | switch(Game_Status)
{
case GAME_INIT:
//Anweisung
break;
case GAME_RE_INIT:
//Anweisung
break;
case GAME_PRE_MENU:
//Anweisung
break;
case GAME_MENU:
//Anweisung
break;
case GAME_PRE_RUN:
//Anweisung
break;
case GAME_RUN:
//Anweisung
break;
}
|
Du brauchst nicht bei jedem case eine geschweifte Klammer! |
|
Nach oben |
|
|
David Super JLI'ler
Alter: 39 Anmeldedatum: 13.10.2005 Beiträge: 315
Medaillen: Keine
|
Verfasst am: 18.05.2007, 08:51 Titel: |
|
|
Die Klammern verursachen den Fehler auch nicht... |
|
Nach oben |
|
|
Snowsong Junior JLI'ler
Alter: 37 Anmeldedatum: 15.05.2007 Beiträge: 53
Medaillen: Keine
|
Verfasst am: 18.05.2007, 14:39 Titel: |
|
|
Die Klammern sind nicht notwendig aber stören auch nicht und mir helfen
sie damit ich im Code besser Ordnung halten kann.
Hmm ob das was mit Unicode zu tun hat ka weil ich kenn erlich gesagt
nicht direkt den Unterschied zwischen Unicode und Multi-Byte aber
programmiern tu ich irgendwie automatisch anscheinend Unicode.
Alle Dinge sind per #define festgelegt und ich such immernoch woran es liegen kann.
Hmm zur Not kann ich auch mal den Kompletten Code posten wenn es
helfen würde?! |
|
Nach oben |
|
|
David Super JLI'ler
Alter: 39 Anmeldedatum: 13.10.2005 Beiträge: 315
Medaillen: Keine
|
Verfasst am: 18.05.2007, 14:58 Titel: |
|
|
Wär evtl hilfreich, ja. |
|
Nach oben |
|
|
KI JLI Master
Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 18.05.2007, 15:05 Titel: |
|
|
Du kannst es statt mit define mal so versuchen
CPP: | static const int GAME_INIT = 0; |
Keine Ahnung warum es nicht funktioniert... |
|
Nach oben |
|
|
Snowsong Junior JLI'ler
Alter: 37 Anmeldedatum: 15.05.2007 Beiträge: 53
Medaillen: Keine
|
Verfasst am: 18.05.2007, 16:06 Titel: |
|
|
Die Headerfile
CPP: | #ifndef MAIN_H
#define MAIN_H
#pragma warning (disable : 4786)
/////////////////////////////////////////////////
//Main.h //
/////////////////////////////////////////////////
/////////////////////////////////////////////////
//Header Dateien zum einbinden
#include <windows.h>
#include "cGraphic.h"
#include "cInput.h"
#include "cSound.h"
#include "cManager.h"
#include "cSprite.h"
/////////////////////////////////////////////////
//Variablen
HWND hwnd; //Handle des Hauptfensters
MSG message; //Variable für die Nachrichtenbehandlung
int Game_Status = 0; //Status des Programms
int Keyboard; //Die Tastatur
DIMOUSESTATE Mouse; //Die Maus
/////////////////////////////////////////////////
//#define zum Status des Programmes
#define GAME_INIT 10; //Das Spiel wird Initialisiert
#define GAME_RE_INIT 11; //Das Spiel wird neuinitialisiert (zb bei ALT+TAB)
#define GAME_PRE_MENU 20; //Das Menü wird geladen
#define GAME_MENU 21; //Das Spiel befindet sich im Menü
#define GAME_PRE_RUN 30; //Das Spiel wird vorbereitet
#define GAME_RUN 31; //Das Spiel läuft
/////////////////////////////////////////////////
//Klassenableitungen
cGraphic Video; //Die Grafikschnittstelle
cInput Input; //Die Eingabe Schnittstelle
cSound Sound; //Die Soundschnittstelle
cManager Manager; //Die Managerschnittstelle
cSprite Sprite;
/////////////////////////////////////////////////
//Prototypen der Funktionen
HWND CreateMainWindow(HINSTANCE hInstance); //Funktion zur Erzeugung des Hauptfensters
LRESULT CALLBACK MessageHandler(HWND hWnd, UINT msg, //Funktion zur Verarbeitung der Nachrichten des Hauptfensters
WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, //Die WinMain Funktion
LPSTR lpCmdLine, int nCmDShow);
#endif MAIN_H
|
Und hier die CPP
CPP: | /////////////////////////////////////////////////
//Main.cpp //
/////////////////////////////////////////////////
/////////////////////////////////////////////////
//Header Dateien zum einbinden
#include "Main.h"
/////////////////////////////////////////////////
//Funktionen
//Funktion zur Erzeugung des Hauptfensters
HWND CreateMainWindow(HINSTANCE hInstance)
{
//Die Klasse für das Hauptfenster festlegen
WNDCLASSEX Hauptfensterklasse =
{
sizeof(WNDCLASSEX), //Größe der Struktur
NULL, //Fensterstil (CS_...)
MessageHandler, //Handler für Nachrichten des Fensters
0, //nicht benötigt (Speicherreservierung)
0, //nicht benötigt (Speicherreservierung)
hInstance, //Instanz des Fensters
NULL, //Icon Groß
NULL, //Cursor
(HBRUSH)GetStockObject(BLACK_BRUSH), //Fensterhintergrund
NULL, //Handle für das Menü
"Hauptfenster", //Name der Klasse
NULL, //Icon klein
};
//Die Klasse für das Hauptfenster registrieren für weiteren Gebrauch
RegisterClassEx(&Hauptfensterklasse);
//Das Hauptfenster erstellen und einen Zeiger darauf zurückgeben
return CreateWindowEx(NULL, //Stil
"Hauptfenster", //Name der WNDCLASSEX Struktur Klasse des Fensters
"Project WSim", //Fenstertitel
WS_OVERLAPPEDWINDOW | //Die Fenstereigenschaften (WS_...)
WS_VISIBLE,
0, //Position X des Fensters
0, //Position Y des Fensters
1024, //Breite des Fensters
768, //Höhe des Fensters
NULL, //Handle des Elternfensters falls WS_CHILDWINDOW
NULL, //Handle des Menüs
hInstance, //Instance des Fensters
NULL); //nicht benötigt (Parameter für MDI-Anwendungen
}
//Funktion zur Verarbeitung der Nachrichten des Hauptfensters
LRESULT CALLBACK MessageHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
//Welche Nachricht wurde genau empfangen
switch(msg)
{
case WM_DESTROY:
{
PostQuitMessage(0);
return 0;
}
break;
}
//Falls die Nachricht nicht vorhanden ist Standart Windowsmethode aufrufen
return DefWindowProc(hWnd, msg, wParam, lParam);
}
//Die WinMain Funktion
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmDShow)
{
//Das Hauptfenster erzeugen
hwnd = CreateMainWindow(hInstance);
//Hauptfenstererzeugung auf Fehler Prüfen
if(hwnd == 0)
{
MessageBox(0, "Es ist ein Fehler beim erzeugen des Hauptfensters aufgetreten", "Fehler", MB_OK);
return 0;
}
//Nachrichtenverarbeitungsschleife
while(message.message != WM_QUIT)
{
//Der GameLoop
if(PeekMessage(&message, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&message);
DispatchMessage(&message);
}
else
{
Manager.Update();
Keyboard = Input.GetKeyboard();
Mouse = Input.GetMouse();
switch(Game_Status)
{
case GAME_INIT:
{
}
break;
case GAME_RE_INIT:
{
}
break;
case GAME_PRE_MENU:
{
}
break;
case GAME_MENU:
{
}
break;
case GAME_PRE_RUN:
{
}
break;
case GAME_RUN:
{
}
break;
}
}
}
return 0;
}
|
hoffe ihr findet etwas^^ |
|
Nach oben |
|
|
David Super JLI'ler
Alter: 39 Anmeldedatum: 13.10.2005 Beiträge: 315
Medaillen: Keine
|
Verfasst am: 18.05.2007, 16:14 Titel: |
|
|
CPP: | #define GAME_INIT 10; //Das Spiel wird Initialisiert
#define GAME_RE_INIT 11; //Das Spiel wird neuinitialisiert (zb bei ALT+TAB)
#define GAME_PRE_MENU 20; //Das Menü wird geladen
#define GAME_MENU 21; //Das Spiel befindet sich im Menü
#define GAME_PRE_RUN 30; //Das Spiel wird vorbereitet
#define GAME_RUN 31; //Das Spiel läuft
|
Überall ein ";" zuviel am Ende. |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 18.05.2007, 16:50 Titel: |
|
|
David hat Folgendes geschrieben: | CPP: | #define GAME_INIT 10; //Das Spiel wird Initialisiert
#define GAME_RE_INIT 11; //Das Spiel wird neuinitialisiert (zb bei ALT+TAB)
#define GAME_PRE_MENU 20; //Das Menü wird geladen
#define GAME_MENU 21; //Das Spiel befindet sich im Menü
#define GAME_PRE_RUN 30; //Das Spiel wird vorbereitet
#define GAME_RUN 31; //Das Spiel läuft
|
Überall ein ";" zuviel am Ende. |
und gleichzeitig ein weiterer gravierender Grund, keine #defines zu benutzen, wenn man sieht wie aufwendig die Fehlersuche war!
Gruß DXer |
|
Nach oben |
|
|
Snowsong Junior JLI'ler
Alter: 37 Anmeldedatum: 15.05.2007 Beiträge: 53
Medaillen: Keine
|
Verfasst am: 18.05.2007, 16:52 Titel: |
|
|
Ne oder ich hab nich schon wieder so n einfachen Fehler begangen -.-
man man man naja wie damals in der Schule nur Schusselfehler und schon
von Note 1 auf 2 oder 3 -.-
Danke das ihr mir geholfen habt^^ |
|
Nach oben |
|
|
|