Прототипы функций C ++ и имена переменных и только типы данных - PullRequest
4 голосов
/ 12 октября 2011

При объявлении прототипа функции в C ++ есть разница между следующим:

void SomeFunction( int Argument ) 
{
    //Stuff
} 

Против

void SomeFunction( int ) 
{
    //Stuff
} 

По сути, я спрашиваю, почему вы пишете имя аргумента переменной в прототипе функции, а не просто в типе данных?

Ответы [ 4 ]

4 голосов
/ 12 октября 2011

Имена аргументов не нужны для компилятора в объявлениях функций.Это для потребления человеком.Они дают дополнительную информацию о том, что делает функция.Хорошие имена функций в сочетании с хорошими именами аргументов служат мгновенной документацией для вашего метода.

2 голосов
/ 12 октября 2011

дополнительный комментарий относительно различий между «объявлением» и «определением». Вы примеры оба определения:

void SomeFunction( int Argument ) 
{
    //Stuff
} 

Прототип был бы декларацией и выглядел бы так:

void SomeFunction( int ) ;

Итак, вы можете иметь в своем заголовке объявление, как указано выше. Затем в вашем cpp вы определяете функцию следующим образом:

void SomeFunction( int Argument ) 
{
    Argument = Argument + 1;
} 

Как вы видите, в объявлении не указывается имя аргумента, но определение определяет его и использует его.

2 голосов
/ 12 октября 2011

Вам нужно имя аргумента, если вы действительно собираетесь использовать аргумент.Некоторые компиляторы (например, Microsoft VC ++) выдают предупреждение, если вы называете аргумент, но не используете его где-либо в функции.

PS То, что вы использовали в своем примере, не является прототипомно фактическое определение функции.В прототипе имя аргумента является чисто необязательным.

1 голос
/ 12 октября 2011

Вам не нужно указывать имя аргумента ни в определении, ни в объявлении.Если вы это сделаете, они даже не должны быть одинаковыми.Вы должны написать один, если вы планируете использовать аргумент.

...