2017-02-21 2 views
0

Für dieses Zitat:Unterschied zwischen Bezeichnerliste und Parameterliste in Funktion?

Eine Kennung Liste in einer Funktion declarator, die nicht Teil einer Definition dieser Funktion leer werden soll.

was ist der Unterschied zwischen der Bezeichnerliste und der Parameterliste und kann jemand ein Beispiel für dieses Zitat angeben.

+4

Es wäre nützlich anzugeben, welchen Abschnitt des Dokuments Sie verwenden, wenn Sie Standard-Anführungszeichen angeben. –

+1

ist es 6.7.5.3/3 – Sabrina

+0

ich denke, dass Sie Ihre Antwort hier finden können ... http://stackoverflow.com/questions/18820751/identifier-list-vs-parameter-type-list-in-c –

Antwort

5

Die "Bezeichnerliste" wird nur in veralteten "K & R Stil" -Funktionen verwendet. Neuer Code, der heute geschrieben wird, würde ihn niemals benutzen. Sie können weitere Details hier sehen: https://stackoverflow.com/a/3092074/4323

Es ist so etwas wie dieses:

void func(identifier-list) 
declaration-list 
{ 
    body 
} 

Wenn sie sagen, sie leer sein soll, sie bedeuten, dass auch die Möglichkeit, alten Code zuzulassen, Sie sind nicht erlaubt, dies zu haben in einer Deklaration, die keine Funktion definiert. Also zum Beispiel ist das nicht erlaubt:

void func(x) int x; 
+0

Was ist mit 'soll leer sein? – Sabrina

+0

Es ist das Gegenteil Schalter sie. – Sabrina

+0

@Sabrina das ist ziemlich klar, nicht wahr? "soll leer sein" bedeutet, dass zwischen den Klammern nichts sein kann, für eine Deklaration, die keine Definition ist. Also kannst du nicht schreiben 'void func (x);' –

2

Identifier Liste ohne Identifier 'Definitionen sagt nichts über die Arten von Funktionsparametern. Daher ist es nicht sinnvoll, eine Bezeichnerliste für eine Funktionsdeklaration anzugeben, wenn sie nicht gleichzeitig eine Funktionsdefinition ist.

Also wird diese Einschränkung des zitierten Zitats verwendet.

Hier ist ein Beispiel

#include <stdio.h> 

void f(); 

int main(void) 
{ 
    int x = 10; 
    f(x); 

    return 0; 
} 

void f(x) 
int x; 
{ 
    printf("x = %d\n", x); 
} 

Wenn eine Parameterliste der Compiler verwendet wird, kann ein Aufruf einer Funktion überprüfen, die gültige Argumente an die Funktion übergeben werden. Daher ist es besser, immer die Parameterliste anstelle der Bezeichnerliste zu verwenden.

Verwandte Themen