2017-02-21 25 views
0

Для этой цитаты:Разница между списком идентификаторов и списком параметров в функции?

список идентификаторов в функции описателя, который не является частью определения этой функции должен быть пустым.

Какая разница между списком идентификаторов и списком параметров и может ли кто-нибудь предоставить пример для этой цитаты.

+4

Было бы полезно указать, в каком разделе какого документа вы используете, когда вы даете стандартные кавычки. –

+1

это 6.7.5.3/3 – Sabrina

+0

Я думаю, вы можете найти свой ответ здесь ... http://stackoverflow.com/questions/18820751/identifier-list-vs-parameter-type-list-in-c –

ответ

5

«Идентификационный список» используется только в устаревших «K R стиле». Новый код, написанный сегодня, никогда не будет использовать его. Вы можете посмотреть более подробную информацию здесь: https://stackoverflow.com/a/3092074/4323

Это что-то вроде этого:

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

Когда они говорят, что это должно быть пустым, они имеют в виду, что даже допуская возможность древнего кода, вы не можете иметь это в объявлении, которое не определяет функцию. Так, например, это недопустимо:

void func(x) int x; 
+0

Как насчет 'должно быть пустым'? – Sabrina

+0

Это наоборот. – Sabrina

+0

@ Сабрина, это довольно ясно, не так ли? «должно быть пустым» означает, что между круглыми скобками не может быть ничего, для объявления, которое не является определением. Поэтому вы не можете написать 'void func (x);' –

2

Список идентификаторов без определений идентификаторов ничего не говорит о типах параметров функции. Поэтому нет смысла указывать список идентификаторов для объявления функции, когда это не является определением функции.

Так что это ограничение цитируемой цитаты используется.

Вот пример

#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); 
} 

Когда список параметров используется компилятор может проверить вызов функции, действительные аргументы передаются в функцию. Поэтому лучше всегда использовать список параметров вместо списка идентификаторов.

Смежные вопросы