Prototypen
-
Ich habe da mal eine frage.
Was sind Prototypen und wofür brauche ich sie??
Wenn ich eine Funktion nicht als Prototyp angebe, kann die Funktion dann keinen Wert zurückgeben?Pascal
-
Was sind Prototypen und wofür brauche ich sie??
In C++ gibt es keine Prototypen. Die gibt's nur in C.
In C++ gibt es Funktionsdeklarationen und die sind, wie der Name vermuten lässt, für die Bekanntmachung von Funktion. Jede Funktion die du aufrufen willst, muss zuvor deklariert worden sein. Ansonsten wird dein Compiler freundlich aber bestimmt die Übersetzung des Codes verweigern.Wenn ich eine Funktion nicht als Prototyp angebe, kann die Funktion dann keinen Wert zurückgeben?
Bevor wir jetzt weitermachen: Bist du sicher, dass du im richtigen Forum gepostet hast? Sprich: Willst du C oder C++ Programmieren?
-
Unser Lehrer meinte es ist c++ und laut deiner beschreibung hätte ich das mit der Bekanntmachung der Funktionen auch gesagt. Hier falls es dich intressiert ein Beispiel von dem was ich als unterlage habe.
//--------------------------------------------------------------------------- //prototypen int Funktion1(void); float Funktion2 (void); void Funktion3 (int,int,float); void Funktion4 (int,int); //--------------------------------------------------------------------------- int main() { int v,alpha; float xloch; v = Funktion1(); xloch = Funktion2(); Funktion4 (v,alpha); Funktion3(v,alpha,xloch); }
Die Reihenfolge ist dann egal, wie ich dann die Funktionen aufrufe?
-
Unser Lehrer meinte es ist c++
Der Code lässt sich in diesem Fall sowohl als C (C99), als auch als C++ übersetzen. Für C89 müsste man zuvor die Zeilenkommentare durch Kommentarblöcke (/* */) ersetzen.
Letztlich ist er aber eher gutes C, denn gutes C++.
In C ist das z.B:int Funktion1(void);
ein Prototyp und das void in Klammern enorm wichtig (ansonsten wäre es kein Prototyp. In C++ ist das eine Funktionsdeklaration und das void in Klammern völlig überflüssig.
Wie auch immer: Gehen wir mal davon aus, dass ihr C++ macht (sprich: das ihr in diesem Fall einen C++ Compiler verwendet).
Jede der Funktionsdeklarationen macht eine Funktion bekannt. Eine Funktion bekannt machen bedeutet, ihren Namen, ihre Parameter und ihren Rückgabewert angeben.
Die Reihenfolge der Deklrationen ist wurscht. Es gibt nur einen Zwang: Bevor du eine Funktion benutzen kannst, muss sie deklariert worden sein.Dieser Zwang gilt aber nur für C++ und C99. In C89 kannst du eine Funktion auch ohne vorherigen Prototyp aufrufen. Ias ist aber sehr fehleranfällig. Es gilt als guter Stil, für jede Funktion einen Prototyp anzugeben.
-
Danke für deine schnelle Hilfe.