Ich dachte immer, dass ein Funktionsprototyp die Parameter der Funktion und deren Namen enthalten muss. Allerdings habe ich das gerade ausprobiert:
%Vor%Und es hat funktioniert! Ich habe sogar versucht, mit extremer Vorsicht zu kompilieren:
%Vor%Und es hat immer noch funktioniert. Meine Frage ist also, wenn Sie in Funktionsprototypen keine Parameternamen benötigen, warum ist das so üblich? Gibt es irgendeinen Zweck dafür? Hat es etwas mit der Signatur der Funktion zu tun?
Nein, diese sind nicht notwendig und werden vom Compiler tatsächlich ignoriert. Sie können ihnen sogar verschiedene Namen in verschiedenen Deklarationen geben; Folgendes ist völlig legal:
%Vor%Der Grund, sie einzubringen, ist Dokumentation:
Parameternamen sind vollständig optional und haben keinen Einfluss auf die Kompilierung. Sie können dort zur besseren Lesbarkeit des Codes platziert werden.
Sie müssen keine Parameternamen in Funktionsprototypen aufnehmen. Sie benötigen nur die vollständige Signatur, die die Parametertypen und (im Falle von Funktionsvorlagenspezialisierungen) die Rückgabewerte enthält.
Es ist jedoch immer noch üblich, Parameternamen einzubeziehen, um selbstdokumentierenden Code zu schreiben. Das heißt, eine Funktion mit dieser Deklaration:
%Vor%ist leichter zu verstehen, wenn man nur den Prototyp betrachtet, vielleicht als diesen:
%Vor%Viele moderne IDEs werden die Parameternamen auch während der Eingabe anzeigen, wenn Sie Code schreiben, der diese Funktion aufruft. Sie können diese Informationen möglicherweise nicht anzeigen, wenn Sie die Parameternamen nicht in den Prototyp aufnehmen.
Es hat viel mit der Signatur der Funktion zu tun.
Einer der Vorteile der Verwendung von .h-Dateien ist, dass wenn jemand vorbeikommt und wissen möchte, was Ihr Programm / api macht, er sich Ihre Header-Datei ansehen und ein Gefühl dafür bekommen kann, welche Operationen ausgeführt werden , ihre Ein- und Ausgänge, wie alles zusammenpasst usw.
Wenn Sie auf eine Methode wie
stoßen würden %Vor%das wäre viel weniger aussagekräftig als eine Methode mit einer Signatur von sagen:
%Vor%Mit der zweiten erhalten Sie zumindest eine Vorstellung davon, welche Operationen ausgeführt werden und was gerade geschieht. Dies ist die Idee dahinter, selbst dokumentierenden Code zu schreiben.
Wenn Sie interessiert sind, können Sie sich Code Complete von Steve McConnell ansehen.
Tags und Links c++ naming function-prototypes