Warum eine Funktion in main neu deklarieren?

8

Ein Beispiel, auf das ich für ein Programm treffe, das sich mit dem Menü beschäftigt.

Er hat alle Funktionen vor der Hauptfunktion deklariert, wie ich es verstehe, und dann wurde eine der Funktionen, die eine void-Funktion ist, auch im Hauptteil erwähnt:

%Vor%

... (Funktionen Implementierungen)

Kannst du mir bitte sagen, warum ist das so? tnx

    
MNY 31.01.2013, 16:37
quelle

4 Antworten

4

Das sind nur Deklarationen der Funktionen, nicht Definitionen. Nicht sicher, warum die count Funktion zweimal deklariert wird. Die Deklaration sagt dem Compiler nur, dass da etwas mit diesem Namen ist. Vielleicht hat der Programmierer vergessen die Methode zu definieren?

Eine Deklaration stellt grundlegende Attribute eines Symbols bereit: seinen Typ und seinen Namen. Eine Definition liefert alle Details dieses Symbols - wenn es eine Funktion ist, was es tut; wenn es eine Klasse ist, welche Felder und Methoden es hat; wenn es eine Variable ist, wo diese Variable gespeichert ist.

zB Erklärung sieht so aus:

%Vor%

zB sieht die Definition so aus:

%Vor%     
Brian J 31.01.2013, 16:47
quelle
6

Kein Grund, das ist nur eine sinnlose Wiederholung des Prototyps.

    
unwind 31.01.2013 16:42
quelle
3

Egal - wo immer Sinn für Ihr Programm ist. Offensichtlich, wenn es innerhalb des Hauptteils ist, wird keine andere Funktion vor der eigentlichen Funktionsimplementierung "wissen", was der Funktionsprototyp ist, was einen Einfluss haben kann.

Ich persönlich tendiere dazu, die Funktion zu implementieren, bevor sie aufgerufen wird, und vermeidet so das Problem, wo der Prototyp plaziert werden soll (es sei denn, es geht in eine Headerdatei, in diesem Fall neigt das dazu, das Problem zu lösen).

    
Mats Petersson 31.01.2013 16:42
quelle
1
  

Kannst du mir bitte sagen, warum ist das so? tnx

Es gibt kein warum , außer dass es ein einfacher Fehler ist; der Autor hat einfach die überflüssige Deklaration verpasst. Solange beide Deklarationen gleich sind, ist es kein Problem (obwohl es hässlich ist und aufgeräumt werden sollte).

FWIW, deshalb definiere ich Funktionen immer, bevor sie in derselben Datei verwendet werden. Die Definition gilt als Deklaration, es gibt also nur einen Prototyp, um den Sie sich kümmern müssen.

    
John Bode 31.01.2013 21:48
quelle

Tags und Links