Zum Inhalt springen

[C++] Fragen zu "Funktions-Prototyp"


Empfohlene Beiträge

Guten Abend,

ich bin gerade dabei mir die Grundlagen von C++ anzueignen (Buch C++ von A bis Z).

Als IDE nutze ich Visual Studio, achte aber darauf das ich nicht aufs .NET Framework zugreife. Sprich Projekttyp Win32 Consolenapp.

Jetzt steht in dem Buch das ich bevor ich Funktion benutzen kann erst ihren Funktions-Prototypen (Deklaration) schreiben muss.

Bsp.:


//Funktions-Prototyp

int checkPoint(int xPos, int yPos);


// Funktionsdefinition

int checkPoint(int xPos, int yPos)

{

//Anweisung

}

Das war mir bisher völlig fremd, da ich es auch ohne diesen Ominösen Funktionsprotoyp gemacht habe.

Da nichts genaueres dazu gesagt wurde wollte ich fragen, warum man das machen sollte, wenn es auch ohne geht?

Lg

Gateway

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das scheint ein bisschen komisch beschrieben zu sein in dem Buch, bzw. du hast was überlesen.

Die erste hälfte des Code kommt in die Headerdatei deines Programms, also beispielsweise "Unit1.h". Die zweite hälfte ist deine eigentliche Funktion, die in die .cpp-Datei geschrieben und bei Funktionsaufruf ausgeführt wird.

Der Zweck der ganzen Sache ist, dass man bei größeren Projekten gerne mit mehreren Units arbeitet, um eine bessere Strukturierung zu bekommen. Da die Units, würden sie nur aus .cpp's bestehen, nicht aufeinander zugreifen könnten, benötigt man die Header-Dateien. Diese werden in den anderen Units eingebunden und liefern damit dem Rest des Programms die Information, welche Funktion wie aufgerufen werden kann. Dafür benötigst du den Funktionstyp (int, void, float...), den Funktionsnamen und Parameter, sprich den Teil //Funktions-Prototyp.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der Begriff des Prototypen stammt eigentlich aus C. Ein Prototyp ist in C die Deklaration einer Funktion, bei der die Funktionsparameter mit deklariert werden (denn die kann man in C89 auch weglassen). In C++ darf man die Parametertypen bei einer Funktionsdeklaration gar nicht weglassen, daher ist die Unterscheidung zwischen Funktionsdeklaration und Funktionsprototyp in C++ sinnlos, weil jede Funktionsdeklaration in C++ ein Prototyp im Sinne von C ist.

In C++ muss eine Funktion deklariert sein, bevor man sie aufrufen kann. In deinem Beispiel ist kein Aufruf der Funktion checkPoint vorhanden, insofern hat der Beispielcode nichts mit diesem Sprachfeature zu tun.

Du musst eine Funktion nicht deklarieren, bevor du sie definieren kannst. In der Definition steckt die Deklaration mit drin.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Naja, Du kannst die Files mit den Funktionsdeklarationen auch als eine Art Referenz sehen. In der Regel kommen die in eine $Header.h und die kann man auch unkompiliert mitausliefern. So kann der Entwickler, der Deine Funktionen(Klassenbibliotheken) benutzen/erlernen will, nachgucken, was da als Aufrufparameter so alles mitgegebenwerden kann. Die eigentlichen Funktionen sollen ihn nicht interessieren.

Die werden lediglich binär mitgeschickt, weil ja gegen die gelinkt werden soll.

So hast Du a) eine saubere Trennung zwischen Funktionsdeklaration (für den Überblick) und der Funktionsdefinition (die niemanden etwas angeht); was aufgrund der Kapselung unter C++ schon dreimal sinnvoll ist und B) kannst Du so kommerziell Deine Objektdateien anbieten, ohne daß Dir jemand "ohne Weiteres" Deine Funktionen klaut (RE mal außen vor).

Wenn Du es wirklich sauber hälst, hast Du immer eine genau eine Klassendatei .h und die zugehörige Definitionsdatei .cpp.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

@klotzkopp:

Genau so hat man uns das in der BS auch erklärt.

Vl. als "besseren" (und auch teureren) Buchtipp hab ich "C++ - lernen und professionell anwenden". Der Preis liegt um die 44€, aber dafür ist es auch sehr gründlich und leicht verständlich erklärt + mit Bsp. und Lösungen unterlegt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...