Gateway_man Geschrieben 2. Mai 2010 Teilen Geschrieben 2. Mai 2010 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
oxygen Geschrieben 2. Mai 2010 Teilen Geschrieben 2. Mai 2010 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 2. Mai 2010 Teilen Geschrieben 2. Mai 2010 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gateway_man Geschrieben 3. Mai 2010 Autor Teilen Geschrieben 3. Mai 2010 Vielen Dank euch beiden. @Klotzkopp: Das mit dem Hinweis auf C scheint mir hier der Fall zu sein, da der Autor die Themen kurioser weise sehr ineinander verfließen lässt. D.h. dieser verweist auch öfters auf C und die dortige Ausführungweise der momentanen Thematik. lg Gateway Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lilith2k3 Geschrieben 3. Mai 2010 Teilen Geschrieben 3. Mai 2010 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 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
r26t01 Geschrieben 14. Mai 2010 Teilen Geschrieben 14. Mai 2010 @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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gateway_man Geschrieben 14. Mai 2010 Autor Teilen Geschrieben 14. Mai 2010 danke für den Tipp. Allerdings bleib ich denk ich bei dem momentanen Buch, da es an sich schon gut beschrieben ist und vor allem sehr sehr umfangreich. lg Gateway Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.