Поместить имя параметров в прототипы функции C? - PullRequest
24 голосов
/ 18 ноября 2011

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

     void foo(int, char);

У меня такой вопрос, является ли хорошей практикой также включать имена параметров?

Ответы [ 3 ]

30 голосов
/ 18 ноября 2011

Да, целесообразно называть аргументы даже в прототипах.

Как правило, все ваши прототипы хранятся в заголовочном файле, и заголовок может быть единственным, что ваши пользователи когда-либо смогут проверить. Таким образом, наличие значимых имен аргументов является первым уровнем документации для вашего API.

Аналогично, комментарии о том, что делают функции (не то, как они реализованы, конечно), должны идти в шапке вместе с их прототипами.

Хорошо написанный заголовочный файл может быть самой важной частью вашей библиотеки!


Как любопытно, постоянство аргументов - это деталь реализации. Поэтому, если вы не изменили аргументную переменную в своей реализации, only поместите const в реализацию:

/* Header file */

/* Computes a thingamajig with given base
 * in the given number of steps.
 * Returns half the thingamajig, or -1 on error.
 */
int super_compute(int base, int steps); 

/* implementation file */

#include "theheader.h"

int super_compute(const int base, int steps)
{
  int b = 2 * base;
  while (--steps) { b /= 8; } /* no need for a local variable :-) */
  return -1;
}

7 голосов
/ 18 ноября 2011

Я определенно рекомендую в том числе имена параметров.Если вы пишете библиотеку, тем, кто будет использовать вашу библиотеку, безусловно, будет полезно узнать, что делает функция из своего прототипа в ваших заголовочных файлах.Рассмотрим, например, memcpy.Без имен параметров вы потерялись бы, узнав, какой источник является источником, а какой целью.Наконец, легче включить имена, чем удалять их, когда вы копируете определение своей функции, чтобы превратить его в прототип.Если вы сохраните имена, вам нужно добавить точку с запятой в конце.

5 голосов
/ 18 ноября 2011

Некоторые IDE и редакторы извлекают информацию о прототипе из заголовочных файлов и предоставляют информацию о параметрах в виде подсказок при вводе.Если имена доступны, это помогает быстрее писать код (и может помочь избежать некоторых ошибок).

...