# [C++] Ungültiger Präprozessorbefehl "inculde"



## KAEPS133 (14. Januar 2011)

*[C++] Ungültiger Präprozessorbefehl "inculde"*

Hi

Wie schon die Überschrift sagt habe ich einige Probleme beim kompilieren einfachster Programme in Microsoft Virsual C++ 2008.

Quelltextbeispiel:

```
// C++ für Spieleprogrammierer
// Listing 3.5
// switch und case
//
#include <iostream>

using namespace std;

// Hauptprogramm
//
int main ()
{
    // Variablen
    //
    char chAuswahl;      // Menüauswahl

    // Auswahlmenü darstellen und Eingabe abfragen
    cout << "(I)ntro, (S)pielen, (O)ptionen, (B)eenden: ";
    cin >> chAuswahl;

    // Je nach Auswahl verzweigen
    switch (chAuswahl)
    {
        // Intro?
        case ('i'):
        {
            cout << "Das Intro wird abgespielt" << endl;
        } break;

        // Spiel starten?
        case ('s'):
        {
            cout << "Das Spiel wird gestartet" << endl;
        } break;

        // Optionen?
        case ('o'):
        {
            cout << "Einstellen der Optionen" << endl;
        } break;

        // Spiel beenden?
        case ('b'):
        {
            cout << "Spiel wird beendet" << endl;
        } break;

        // Alles andere gilt als Fehler
        default:
        {
            cout << "Falsche Eingabe" << endl;
        }
    }

    // Hier geht es nach break weiter
    cout << "Ende" << endl;

    return 0;
}
```
Und beim kompilieren bekomme ich dann diesen Fehler:


```
1>test.cpp
1>c:\users\daniel\documents\visual studio 2008\projects\test\test.cpp(5) : fatal error C1021: Ungültiger Präprozessorbefehl "inculde".
1>Das Buildprotokoll wurde unter "file://c:\Users\Daniel\Documents\Visual Studio 2008\Projects\test\Debug\BuildLog.htm" gespeichert.
1>test - 1 Fehler, 0 Warnung(en)
========== Alles neu erstellen: 0 erfolgreich, Fehler bei 1, 0 übersprungen ==========
```
Hat jemand eine ahnung was ich machen kann?


----------



## Zappzarrap (14. Januar 2011)

*AW: [C++] Ungültiger Präprozessorbefehl "inculde"*

Seltsam, "inculde" wird angemeckert aber "include" hast du geschrieben. Ich weiss nicht genau wie es sich bei VS verhält aber manche Compiler legen wert darauf das der namespace an der richtigen stelle deklariert ist. ich geh mal davon aus das das deine einzige source ist, versuch mal die includes unter "using namespace std" zu packen" . Eigentlich kannst du das bei einer Source auch weglassen, wird erst wichtig wenn du mit Klassen und Objekten anfängst...


----------



## KAEPS133 (14. Januar 2011)

*AW: [C++] Ungültiger Präprozessorbefehl "inculde"*

Es hat irgendwie einfach geholfen den Quelltext einfach in eine neue Datei zu kopieren. keine Ahnung was das sollte aber es klappt jetzt.

Jetzt hab ich aber trotzdem noch eine frage. Da wir ein Schulprojekt machen sollen habe ich einfach schonmal angefangen ein Grundgerüst zu bauen.
Dazu hab ich aber noch eine Frage.


```
// Menü auswahl
    //
    cout << "(R)eadMe\n";
    cout << "(A)#TEXT#\n";
    cout << "(B)#TEXT#\n";
    cout << "(C)#TEXT#\n";
    cout << "Treffen Sie eine Wahl: \n";
    cin >> chAuswahl;
    
    // Je nach Auswahl verzweigen
    switch (chAuswahl)
    {
        // ReadMe
    case ('R'):
        {
            cout << "ReadMe Text" << endl;
        }break;
```

Nur wie kann ich es machen das wenn ich auch ein kleines 'r' eingebe ich zur gewünschen Auswahl komme? Bei if funktioniert es ja auf diese art:

```
if ((chAuswahl == 'r') || (chAuswahl == 'R'))
{ ....
```

Aber wie Funktioniert das jetzt bei switch und case?


----------



## drWatson (14. Januar 2011)

*AW: [C++] Ungültiger Präprozessorbefehl "inculde"*

Der einfachste Fall, der mir da einfallen würde, wäre, einfach noch nen "case" zu machen - quasi einmal für "R" und einen für "r"...
...weiß nich, ob's eleganter geht - mit switch, glaube ich aber ni


----------



## aurionkratos (14. Januar 2011)

*AW: [C++] Ungültiger Präprozessorbefehl "inculde"*

probier mal


```
case('r'): 
case ('R'):
            cout << "ReadMe Text" << endl;
            break;
```

Geht zumindest in C.


----------



## KAEPS133 (14. Januar 2011)

*AW: [C++] Ungültiger Präprozessorbefehl "inculde"*



aurionkratos schrieb:


> probier mal
> 
> 
> ```
> ...



Ja das funktioniert danke 

Gibts es dann irgendwie eine einfache möglichkeit das ich dann nach der anzeige von der readme z.B. durch druck einer beliebigen taste wieder im Menü lande und alle anderen eingaben zurückgesetzt wird? ich also an den anfang vom programm zurückspringe?


----------



## drWatson (14. Januar 2011)

*AW: [C++] Ungültiger Präprozessorbefehl "inculde"*

Mh - wieder vielleicht ein bisschen unelegant:
Du schreibst fast das gesamte Programm in ner Schleife. Nachdem du die ReadMe anzeigen lässt, schreibst du einfach ein "cin" dann müsste das Programm doch auf "Enter" warten, oder? Wegen der Schleife, werden dann alle Variablen neu initialisiert, quasi gelöscht und der Spaß geht von vorn los...


----------



## KAEPS133 (14. Januar 2011)

*AW: [C++] Ungültiger Präprozessorbefehl "inculde"*



drWatson schrieb:


> Mh - wieder vielleicht ein bisschen unelegant:
> Du schreibst fast das gesamte Programm in ner Schleife. Nachdem du die ReadMe anzeigen lässt, schreibst du einfach ein "cin" dann müsste das Programm doch auf "Enter" warten, oder? Wegen der Schleife, werden dann alle Variablen neu initialisiert, quasi gelöscht und der Spaß geht von vorn los...



Hm ich versteh grad nicht ganz wie du das meinst.
Ich häng grad einfach mal den Quelltext ran. Vll kannst du das ja grad mal in rot oder so eintragen was du meinst. Wäre wunderbar 
Möchte doch meine 1 darauf haben und der Lehrer ist etwas "untalentiert" beim erklären 


```
///////////////////////////////////////////////////////////////////
// Schulprojekt xyz ///////////////////////////////////////////////
// Gruppe: Sven, Daniel, Sina, Isabelle ////////////////////////
///////////////////////////////////////////////////////////////////

#include <iostream>

using namespace std;

///////////////////////////////////////////////////////////////////
// Hauptprogramm //////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////

int main ()
{
    // Variablen
    //
    char chAuswahl;    // Menü Auswahlpunkte

    // Hauptmenü
    //
    cout << "Wilkommen im Programm #NAME#.\n\n";
    cout << "Sie befinden sich im Hauptmenue.\n";
    cout << "Bitte lesen Sie vor der ersten Anwendung die ReadMe!\n\n\n";
    
    // Menü auswahl
    //
    cout << "Menue: " << endl;
    cout << "------" << endl;
    cout << "A: ReadMe" << endl;            // Readme
    cout << "B: #TEXT#" << endl;            //
    cout << "C: #TEXT#" << endl;            //
    cout << "D: Programm beenden" << endl;    // Exit
    cout << "Treffen Sie eine Wahl: ";
    cin >> chAuswahl;
    
    // Je nach Auswahl verzweigen
    //
    switch (chAuswahl)
    {
        // ReadMe
    case ('a'):
    case ('A'):
        {
            cout << "\n\n\n";
            cout << "Welcome to the ReadMe\n";
            cout << "#TEXT#\n";
            cout << "© 2011\n";
        }break;

        // Fall 2
    case ('b'):
    case ('B'):
        {
            cout << "\n\n\n";
            cout << "random Text" << endl;
        }break;

        // Fall 3
    case ('c'):
    case ('C'):
        {
            cout << "\n\n\n";
            cout << "random Text" << endl;
        }break;

        // Exit
    case ('d'):
    case ('D'):
        {
            cout << "\n\n\n";
            cout << "exiting now ..." << endl;
        }break;

        // alles andere gilt als Fehler
    default:
        {
            cout << "\n\n\n";
            cout << "Falsche Eingabe" << endl;
        }
    }

    // Hier gehts es nach break weiter
    cout << "\n\n" << endl;

    return 0;
}  
///////////////////////////////////////////////////////////////////
// Ende ///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
```


----------



## drWatson (14. Januar 2011)

*AW: [C++] Ungültiger Präprozessorbefehl "inculde"*

Also das wäre dann der Code, müsste so gehen, nur bei der Sache mit dem "cin" bin ich mir nicht sicher...


```
///////////////////////////////////////////////////////////////////
// Schulprojekt xyz ///////////////////////////////////////////////
// Gruppe: Sven, Daniel, Sina, Isabelle ////////////////////////
///////////////////////////////////////////////////////////////////
 
#include <iostream>
 
using namespace std;
 
///////////////////////////////////////////////////////////////////
// Hauptprogramm //////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
 
int main ()
{
    // Variablen [COLOR=red]etwas nach unten verschieben, dafür eine neue, die du für die Abbruchbedingung der Schleife brauchst    //
    boolean schleife = true;    
 
    // Hauptmenü
    //
    cout << "Wilkommen im Programm #NAME#.\n\n";
    cout << "Sie befinden sich im Hauptmenue.\n";
    cout << "Bitte lesen Sie vor der ersten Anwendung die ReadMe!\n\n\n";
 
    // Menü auswahl
    //
   [COLOR=red]while(schleife)     //meint: so lange die variable schleife="true"[COLOR=red] {    
    [COLOR=red] char chAuswahl;     //mit jedem Schleifedurchlauf wird dann "chAuswahl" neu initialisiert, und damit zurückgesetzt 
    cout << "Menue: " << endl;
    cout << "------" << endl;
    cout << "A: ReadMe" << endl;            // Readme
    cout << "B: #TEXT#" << endl;            //
    cout << "C: #TEXT#" << endl;            //
    cout << "D: Programm beenden" << endl;    // Exit
    cout << "Treffen Sie eine Wahl: ";
    cin >> chAuswahl;
 
    // Je nach Auswahl verzweigen
    //
    switch (chAuswahl)
    {
        // ReadMe
    case ('a'):
    case ('A'):
        {
            cout << "\n\n\n";
            cout << "Welcome to the ReadMe\n";
            cout << "#TEXT#\n";
            cout << "© 2011\n";
            [COLOR=red]cin    >> "Mit Enter weiter";   //hier bin ich mir nicht ganz sicher, ob das so geht        }break;
 
        // Fall 2
    case ('b'):
    case ('B'):
        {
            cout << "\n\n\n";
            cout << "random Text" << endl;
        }break;
 
        // Fall 3
    case ('c'):
    case ('C'):
        {
            cout << "\n\n\n";
            cout << "random Text" << endl;
        }break;
 
        // Exit
    case ('d'):
    case ('D'):
        {
            cout << "\n\n\n";
            cout << "exiting now ..." << endl;
            [COLOR=red]schleife = false;     //setzt "schleife" false und geht damit aus der Schleife
        }break;
 
        // alles andere gilt als Fehler
    default:
        {
            cout << "\n\n\n";
            cout << "Falsche Eingabe" << endl;
        }
    }
[COLOR=red]  }         //Schleifenende    // Hier gehts es nach break weiter
    cout << "\n\n" << endl;
 
    return 0;
}  
///////////////////////////////////////////////////////////////////
// Ende ///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
```


----------



## KAEPS133 (14. Januar 2011)

*AW: [C++] Ungültiger Präprozessorbefehl "inculde"*

Ok das sieht soweit auch logisch aus. bei den variablen hab ich die dann noch richtig definiert da es bool heißen muss sonst ging es nicht.
Dennoch bekomm ich beim kompilieren einen Fehler den ich nicht ferstehen kann.


```
Kompilieren...
Schulprojekt.cpp
c:\users\daniel\documents\visual studio 2008\projects\schulprojekt\schulprojekt.cpp(54) : error C2679: Binärer Operator '>>': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'const char [17]' akzeptiert (oder keine geeignete Konvertierung möglich)
        f:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(1144): kann 'std::basic_istream<_Elem,_Traits> &std::operator >>>(std::basic_istream<_Elem,_Traits> &,signed char *)' sein
        with
        [
            _Elem=char,
            _Traits=std::char_traits
        ]
        f:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(1146): oder "std::basic_istream<_Elem,_Traits> &std::operator >>>(std::basic_istream<_Elem,_Traits> &,signed char &)"
        with
        [
            _Elem=char,
            _Traits=std::char_traits
        ]
        f:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(1148): oder "std::basic_istream<_Elem,_Traits> &std::operator >>>(std::basic_istream<_Elem,_Traits> &,unsigned char *)"
        with
        [
            _Elem=char,
            _Traits=std::char_traits
        ]
        f:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(1150): oder "std::basic_istream<_Elem,_Traits> &std::operator >>>(std::basic_istream<_Elem,_Traits> &,unsigned char &)"
        with
        [
            _Elem=char,
            _Traits=std::char_traits
        ]
        f:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(155): oder "std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(std::basic_istream<_Elem,_Traits> &(__cdecl *)(std::basic_istream<_Elem,_Traits> &))"
        with
        [
            _Elem=char,
            _Traits=std::char_traits
        ]
        f:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(161): oder "std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(std::basic_ios<_Elem,_Traits> &(__cdecl *)(std::basic_ios<_Elem,_Traits> &))"
        with
        [
            _Elem=char,
            _Traits=std::char_traits
        ]
        f:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(168): oder "std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(std::ios_base &(__cdecl *)(std::ios_base &))"
        with
        [
            _Elem=char,
            _Traits=std::char_traits
        ]
        f:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(175): oder "std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(std::_Bool &)"
        with
        [
            _Elem=char,
            _Traits=std::char_traits
        ]
        f:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(194): oder "std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(short &)"
        with
        [
            _Elem=char,
            _Traits=std::char_traits
        ]
        f:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(228): oder "std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(unsigned short &)"
        with
        [
            _Elem=char,
            _Traits=std::char_traits
        ]
        f:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(247): oder "std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(int &)"
        with
        [
            _Elem=char,
            _Traits=std::char_traits
        ]
        f:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(273): oder "std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(unsigned int &)"
        with
        [
            _Elem=char,
            _Traits=std::char_traits
        ]
        f:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(291): oder "std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(long &)"
        with
        [
            _Elem=char,
            _Traits=std::char_traits
        ]
        f:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(309): oder "std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(__w64 unsigned long &)"
        with
        [
            _Elem=char,
            _Traits=std::char_traits
        ]
        f:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(329): oder "std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(__int64 &)"
        with
        [
            _Elem=char,
            _Traits=std::char_traits
        ]
        f:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(348): oder "std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(unsigned __int64 &)"
        with
        [
            _Elem=char,
            _Traits=std::char_traits
        ]
        f:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(367): oder "std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(float &)"
        with
        [
            _Elem=char,
            _Traits=std::char_traits
        ]
        f:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(386): oder "std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(double &)"
        with
        [
            _Elem=char,
            _Traits=std::char_traits
        ]
        f:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(404): oder "std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(long double &)"
        with
        [
            _Elem=char,
            _Traits=std::char_traits
        ]
        f:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(422): oder "std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(void *&)"
        with
        [
            _Elem=char,
            _Traits=std::char_traits
        ]
        f:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(441): oder "std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(std::basic_streambuf<_Elem,_Traits> *)"
        with
        [
            _Elem=char,
            _Traits=std::char_traits
        ]
        bei Anpassung der Argumentliste '(std::istream, const char [17])'
```

Wärst du vll bereit kurz mit mir in ICQ, Steam oder sonstigem zu reden und da eine schnelle Lösung zu finden? ich denke das wäre für uns beide am einfachsten ^^


----------



## drWatson (14. Januar 2011)

*AW: [C++] Ungültiger Präprozessorbefehl "inculde"*

Ja, machen wir mal im Steam, aber wirklich nur kurz - ich gleich Film gucken gehen 

Achso, und der Fehler mit dem Variablentyp kommt daher, da ich eig. Java programmiere und da heißt der Typ boolean^^


----------



## Crymes (18. Januar 2011)

*AW: [C++] Ungültiger Präprozessorbefehl "inculde"*

eS GIBT ÜBRIGENS SCHON c++ Express 2010, nur so nebenbei.


----------



## Enrico (18. Januar 2011)

*AW: [C++] Ungültiger Präprozessorbefehl "inculde"*



KAEPS133 schrieb:


> Ok das sieht soweit auch logisch aus. bei den variablen hab ich die dann noch richtig definiert da es bool heißen muss sonst ging es nicht.
> Dennoch bekomm ich beim kompilieren einen Fehler den ich nicht ferstehen kann.
> 
> 
> ...


Du brauchst in Zeile 54 in Variable vom Typ std::string und kein char-Array.


----------

