Ich erinnere mich, vorher gelesen zu haben über die Signifikanz (oder das Fehlen davon) zwischen dem Einschließen eines Parameternamens in einer Funktionsdeklaration und nicht einschließlich eines. Aber ich kann mich nicht erinnern, was ich gelesen habe oder wo ich es gelesen habe.Was ist der Unterschied zwischen der Angabe eines Parameternamens in einer Funktionsdeklaration und ohne einen?
zum Beispiel
void do_something(int *); // No parameter name included, only type.
vs ...
void do_something(int * i); // type AND parameter name included.
Also, was ist der Unterschied zwischen diesen beiden Erklärungen? Danke, dass Sie diese möglicherweise unbedeutende Frage gelesen und vielleicht beantwortet haben.
- UPDATE -
Okay, also das, was ich hatte, war von einem alten Professor von mir Warnung eine Reihe von Stilrichtlinien liest einen Parameternamen in Funktionsdefinition gegen einschließlich und NICHT den Parameter in der Funktion .
void do_something(int * i) { //code that doesn't use i;} //BAD
void do_something(int *) { //code that doesn't use i;} //OK
Makros sind eine Art Böses, was mit Namenskollisionen, Mehrfachauswertungen von Argumenten usw. Manchmal sind sie praktisch notwendig, aber es ist eine gute Idee, sie im Allgemeinen zu vermeiden. Verwenden Sie also besser die Funktionsvorlage 'unusedParam'. Das heißt, wenn Sie nicht mit den Warnungen leben können. Prost, –
Einverstanden, Makros sind böse. Aber IMO, irgendein Code, der nur existiert, um zu sagen "Ja, ich mache nichts mit diesem Argument. Halt die Klappe, du dummer Compiler!" ist nicht viel besser. – cHao
Aus diesem Grund existiert die Syntax '(void) argName;'. Das sagt dem Compiler, dass "argName" "verwendet" ist, obwohl es zu einem No-Op ausgewertet wird. –