Headerdatei
-
Hallo,
Ich hab ein kleines Anfängerproblem das für mich unlösbar ist
Ich will einen Taschenrechner Prog. der ein meu hat und immer den bilds´chirm löscht ... wenn man zb eine addition ausgeführt hat ...Ich wollte das das menu eine Funktion ist und in als Menu.h abgespeichert ist
Dann hab ich menu.h so in meiner main eingefügt[cpp]#include "Menu.h"
(Die Datei ist im selben ordner wie die main und das projekt ...)Aber der Compiler gibt folgende Felermeldung aus ... :
3 D:\Users\Cpp\Desktop\main.cpp In file included from main.cpp
6 D:\Users\Cpp\Desktop\Menu.h expected unqualified-id before '{' token
6 D:\Users\Cpp\Desktop\Menu.h expected,' or;' before '{' token
D:\Users\Cpp\Desktop\Makefile.win [Build Error] [main.o] Error 1Wird vermutlich ein Großer Anfängerfhler sein den ich übersehen hab

-
Wie sieht denn deine Menu.h aus?
-
pyhax schrieb:
Wie sieht denn deine Menu.h aus?
#include <iostream> #include <windows.h> using namespace std; void MENU (); { cout << endl; cout << "\n<1> START" << endl; cout << "\n<2> INFO" << endl; cout << "\n<3> END" << endl; }/edit pumuckl: cpp-tag geschlossen
-
Das ; nach void MENU() muss weg.
EDIT: Du weist schon, das du da Linkerprobleme bekommst, wenn du Menu in mehr als einer .cpp einbindest? Google: One defintion rule, Include guards, inline
-
Die Definition der Funktion MENU() gehört in die entsprechende CPP Datei.
Im Moment ist in Menu.h eine Mischung aus Dekl. und Definition der Funktion MENU().
-
pyhax schrieb:
Das ; nach void MENU() muss weg.
Das alleine bringt aber bald auch wieder Probleme mit sich. Wenn so, dann gehört da auch noch ein inline hin um die ODR nicht zu verletzen.
-
theta schrieb:
pyhax schrieb:
Das ; nach void MENU() muss weg.
Das alleine bringt aber bald auch wieder Probleme mit sich. Wenn so, dann gehört da auch noch ein inline hin um die ODR nicht zu verletzen.
Siehe Edit
-
Danke ^^ man ich muss besser cpp lernen

-
Und
using namespace std;gehoert nie in Header. Es gilt schlicht und einfach als grauenhafter Stil, im Header Namespaces zu oeffnen. Solltest du die Funktion inline machen wollen, dann schreibstd::coutzumindest in Headern aus.
Selbiges gilt uebrigens fuer spaeter, wenn du Klassen in den Headern definierst und dann auf Typen wie z.B. std::string, std::vector usw. fuer Membervariablen zurueckgreifen willst.
-
Jonas OSDever schrieb:
Es gilt schlicht und einfach als grauenhafter Stil, im Header Namespaces zu oeffnen.
Bestenfalls. Schlimmstenfalls gibts Compilerfehler oder unerwartetes Laufzeitverhalten nach deren ursache man eine kleine Ewigkeit suchen kann.
-
Das geht am anfang jedem so
nicht nur dir...wir alle haben dieses stadium durchschritten 
#include schrieb:
Danke ^^ man ich muss besser cpp lernen
