#c #gcc
#c #gcc
Вопрос:
Существует множество сообщений, объясняющих, почему явное выполнение foo(void)
лучше, чем foo()
потому, что оно указывает, что нет аргументов функции вместо неизвестного количества.
Однако, похоже, я не могу найти, лучше ли указывать void как в объявлении файла заголовка, так и в определении исходного файла, например:
foo.h
void foo(void);
foo.c
void foo(void)
{
return;
}
или
foo.h
void foo(void);
foo.c
void foo()
{
return;
}
Какая из них лучше использовать, и есть ли конкретная причина делать одно поверх другого?
Комментарии:
1. В основном основано на мнениях. Оба одинаковые. Любое другое мнение неверно 😉
2. @John3136 Действительно? «в первую очередь на основе мнений»? То, что стандарт за последние 27 лет явно документирует как неприемлемое и «может быть рассмотрено для отзыва в будущих версиях», не является вопросом мнения.
Ответ №1:
Объявления и определения функций в старом стиле с пустыми круглыми скобками являются устаревшей функцией (N1570 6.11.6, 6.11.7). Вряд ли есть какие-либо веские причины для их использования.
Используйте (void)
последовательно, а не ()
.
Ответ №2:
В вашем конкретном случае это не имеет значения, однако это хорошая привычка писать:
void foo(void)
{
потому что может наступить время, когда вы пишете тело функции, не имея предварительно отдельного прототипа, и это служит прототипом, тогда void foo() {
как нет.