Funktionsprototyp in main - best practice deklariert?

8

Ist das ein guter Stil, um den Funktionsprototyp innerhalb der Hauptfunktion deklarieren zu lassen?

Ich habe mir ein C-Tutorial angesehen, ich denke, es ist ziemlich veraltet. Sie deklarieren jedoch den Funktionsprototyp innerhalb von main. Ich erkläre normalerweise draußen vor Haupt.

%Vor%     
ant2009 02.06.2009, 16:10
quelle

5 Antworten

16

Ich persönlich würde aus verschiedenen Gründen "nein" sagen:

  • macht den Code für main länger
  • kann einen Neuling dazu bringen, zu denken, dass die Funktion auf main
  • beschränkt ist
  • in echtem Code würde ich normalerweise die Funktion in eine andere Kompilierungseinheit einfügen und # ihre Headerdatei
  • einschließen
anon 02.06.2009, 16:15
quelle
5

Ich werde auch nein sagen mit dem zusätzlichen Grund, dass wenn Sie explizite Deklarationen über den gesamten Code beginnen, Sie definitiv ungelöste externe Daten erhalten, wenn die Funktion, die Sie anrufen, plötzlich ihre Signatur ändert. Wenn Sie EINE Deklaration in einer Header-Datei haben, müssen Sie nur eine Deklaration ändern, wenn sich die Funktion ändert.

Allerdings würde ich aus folgendem Grund ja sagen: Wenn Sie nur eine einfache Testmethode schreiben, die nur für den einmaligen Gebrauch geschrieben ist, d. h. wenn Sie etwas wirklich schnell testen und dann die Funktion sofort verwerfen möchten. Dann kann es geschickt sein, einfach eine Deklaration einzuwerfen, bevor Sie den Anruf tätigen möchten.

Für Produktionscode - & gt; Nein nein Nein ! :)

    
ralphtheninja 02.06.2009 16:29
quelle
4

Es ist kein guter Stil.

Deklarieren Sie entweder die lokalen Funktionsprototypen am Anfang oder verschieben Sie sie in eine Header-Datei.

Funktionsprototypen (und auch externe Variablen) können fast überall in der c-Sprache deklariert werden. Aber nur weil es möglich ist, sollte kein Grund sein, Spaghetti C zu schreiben.

Es macht den Code weniger lesbar. Für mich sind solche Praktiken ein deutliches Zeichen für Code-Geruch.

    
Nils Pipenbrinck 02.06.2009 16:19
quelle
1

Ich denke, das ist nur ein kleines Beispiel für das Tutorial ... das machen Sie, wenn Sie Funktionen einführen ...

Ich stimme Neil zu ...

    
LB40 02.06.2009 16:19
quelle
1

Da ich in dieser Pony-Show nicht die erforderliche Anzahl von Reifen gesprungen bin, bleibt mir nichts anderes übrig, als diesen Kommentar als Antwort zu posten.

Beachten Sie, dass dies nur ein Ausschnitt aus einem Buch ist und nicht die Art von Code, den Sie in einer Produktionsumgebung sehen. Das Code-Snippet ist in Ordnung, aber nicht ideal. Neil gab die beste Antwort, also gab ich ihm +1. Ich würde seinen dritten Punkt erwähnen, wenn Sie wirklich wissen wollen, wie es außerhalb von Tutorial / Lehrbüchern gemacht wird.

Auch ein Punkt, seit ich sie gemacht habe: Das "stdio.h" vs ist einfach eine Möglichkeit, dem Präprozessor mitzuteilen, wo nach der Datei stdio.h zu suchen ist. In den meisten Fällen sehen Sie stdio.h umgeben von & lt; & gt; Anstatt von "". Allerdings werden Ihre eigenen Header-Dateien, wie von Neils 3. Punkt erwähnt, von "" umgeben sein.

    
user71918 02.06.2009 17:02
quelle

Tags und Links