www.wikidata.de-de.nina.az
Dieser Artikel behandelt das Konzept in Programmiersprachen Zum Konzept beim technischen Prototypenbau siehe Prototyp Technik Als Funktionsprototyp oder Funktionskopf bezeichnet man in verschiedenen Programmiersprachen vor allem C und C die Deklaration einer Funktion inklusive Angaben uber Anzahl und Typ der Parameter und Typ des Ruckgabewertes getrennt von ihrer Implementierung Definition Man spricht auch ungenau von der Vorausdeklaration englisch forward declaration oft falsch als Vorwartsdeklaration ubersetzt einer Funktion diese muss aber nicht in jedem Fall einen vollwertigen Funktionsprototypen darstellen Beispiel int funktion ware in C eine gultige Vorausdeklaration aber kein Prototyp da keinerlei Angaben uber Funktionsparameter gemacht werden Jede Definition einer Funktion liefert hingegen automatisch immer auch eine Prototypdeklaration fur nachfolgenden Programmcode Inhaltsverzeichnis 1 Hintergrund 2 Verwendung 3 Beispiel in C 4 Siehe auch 5 Literatur 6 EinzelnachweiseHintergrund BearbeitenMit Hilfe von Funktionsprototypen wird dem Compiler die Schnittstelle einer Funktion mitgeteilt bevor diese verwendet wird So kann der Compiler bei jedem Aufruf der Funktion uberprufen ob die Funktionsparameter und der Ruckgabewert konsistent verwendet werden Die vollstandige Implementierung einer Funktion kann so zu einem spateren Zeitpunkt oder in einem separaten Programmmodul erfolgen Dieses Konzept ermoglicht auch den wechselseitigen Aufruf zweier oder mehrerer Funktionen englisch mutual recursion sowie den Einsatz von Single Pass Compilern die den Quelltext eines Programms in einem Durchgang ubersetzen Beim Entwurf von Pascal nutzte Niklaus Wirth solche bereits aus ALGOL bekannten Vorausdeklarationen um beim damaligen Stand der Compilertechnologie die Implementierung eines Single Pass Compilers zu ermoglichen 1 Verwendung BearbeitenFunktionsprototypen konnen genutzt werden um lediglich die Schnittstelleninformationen zur Verfugung zu stellen und die interne Realisierung verborgen zu halten In diesem Fall unterstutzen Funktionsprototypen das sogenannte Geheimnisprinzip Funktionsprototypen und zugehorige Implementierungen werden dann getrennt gehalten Veroffentlicht werden lediglich die Dateien mit den Funktionsprototypen In dieser Form wurden Funktionsprototypen etwa in der Sprache Modula 2 eingesetzt In der Sprache Object Pascal kann man durch das Eintragen von Prototypen in einem offentlichen und einem geschutzten Teil steuern ob externe Objekte auf Interna zugreifen durfen oder nicht Auch dies dient dem Geheimnisprinzip Wahrend im ersten Fall eine Moglichkeit zum Verbergen von Interna vorliegt dient das Konzept im zweiten Fall eher der Unterbindung von Zugriffen auf Interna Wahrend z B in C Funktionsprototypen verwendet werden mussen 2 ist dies in C nur in bestimmten Fallen zwingend vorgeschrieben Funktionen der C Standardbibliothek durfen nicht ohne Prototypen verwendet werden Fur Funktionen bei deren Aufruf die automatische Anpassung der Argumente default argument promotion zu den entsprechenden Parametern unpassende Datentypen liefern wurde sind Funktionsprototypen ebenfalls verpflichtend In diversen Richtlinien beispielsweise MISRA C wird die Verwendung von Funktionsprototypen zur Konsistenzprufung gefordert 3 In C99 wird die keinen Funktionsprototyp darstellende einfache Vorausdeklaration einer Funktion bereits als veraltet bezeichnet was auf eine Entfernung dieser Variante in zukunftigen Versionen der Sprachnorm hinweist 4 Beispiel in C Bearbeiten enthalt unter anderem den Funktionsprototypen fur printf include lt stdio h gt Prototypdeklaration die Parameterbezeichner sind optional double summe double zahl1 double zahl2 int main void Aufruf der Funktion ohne Funktionsprototyp waren hier Argumenttyp int und Parametertyp double inkompatibel printf 2 3 g n summe 2 3 return 0 Definition der Funktion double summe double zahl1 double zahl2 return zahl1 zahl2 Siehe auch BearbeitenSignatur Programmierung Literatur BearbeitenBritish Standards Institute Hrsg The C Standard Incorporating TC1 BS ISO IEC 9899 1999 John Wiley amp Sons 2003 ISBN 0 470 84573 2 Einzelnachweise Bearbeiten Brian W Kernighan Why Pascal is Not My Favorite Programming Language 1981 englisch liu se PDF abgerufen am 21 September 2010 Working Draft Standard for Programming Language C PDF 4 6 MB Nicht mehr online verfugbar Archiviert vom Original am 14 Dezember 2005 abgerufen am 26 September 2010 englisch nicht normatives Arbeitsdokument nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot www open std org MISRA C Rules PDF Nicht mehr online verfugbar Archiviert vom Original am 22 Februar 2014 abgerufen am 7 Februar 2014 englisch nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot home sogang ac kr Rationale fur C99 Revision 5 10 PDF 898 kB Abgerufen am 12 September 2010 englisch Abschnitt 6 11 6 Abgerufen von https de wikipedia org w index php title Funktionsprototyp amp oldid 238327211