Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

06.04.2013, 18:50

Listing 4.3

Hallo, ich bin grade beim Listing 4.3 - Gültigkeitsbereiche angekommen und es tritt beim kompilieren folgender Fehler auf:
" error C2447: '{': Funktionsheader fehlt - Parameterliste im alten Stil?"



#include <iostream>

using namespace std;

int berechnePunkte (); //Funktionsprototyp
int Bonus = 500;

//Hauptprogramm

int main ()
{
//Variablen
int Punkte;

Punkte = berechnePunkte (); // Funktion aufrufen

cout << "Punkte: " << Punkte << endl;
cout << "Davon Bonuspunkte: "<< Bonus << endl;

return 0;
}

// berechne Punkte

int berechnePunkte ();
{
int Punkte;

cout << "Wieviele Punkte erreicht? ";
cin >> Punkte;

Punkte += Bonus;

return Punkte;
}


Habe ich irgendwo einen Dreher drin der mir nicht auffällt?

Cookiezzz

Frischling

Beiträge: 91

Wohnort: Deutschland

Beruf: Schüler

  • Private Nachricht senden

2

06.04.2013, 19:04

Bei int berechnePunkte (); ist ein ; zuviel.

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

3

06.04.2013, 19:04

C-/C++-Quelltext

1
2
int berechnePunkte (); // <---
{

Semikolon weg.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

4

06.04.2013, 19:11

Danke euch beiden.

Für mich zum Verständnis: Warum muss es oben bei der Deklaration als Funktionsprototyp hin und unten bei der Definition nichtmehr?

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

5

06.04.2013, 20:05

Weil das Semikolon eben anzeigt, dass es sich um eine Deklaration und keine Definition handelt.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

6

06.04.2013, 20:40

Das ; bedeutet, dass der Ausdruck zuende ist. Da der Teil in den geschweiften Klammern zur Definition gehört ist es dort falsch.
Ich glaub früher (vor meiner Zeit) musste man die Funktionsdefinition mit einem Semikolon nach der schließenden, geschweiften Klammer beenden. Das funktioniert übrigens immernoch, ist allerdings unnötig.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

7

07.04.2013, 13:14

Klingt logisch, danke euch beiden, wieder was gelernt.

Werbeanzeige