2016-06-27 4 views
1

Какие случаи использования ничего не делать функции (в C), как:Использование ничего не делать функции

dummy() {} 

Я читал «Язык программирования C» на K & R и в главе 4 (Функции & Программные структуры), в нем упоминается, что

Функция do-nothing, подобная этой (показанная выше), иногда полезна как владелец места во время разработки программы.

Может ли кто-нибудь объяснить, что автор означает этим и использует эти типы функций?

+4

Что вы не понимаете в цитируемом тексте? –

+0

Предположим, вы хотите получить результат обширного вычисления, но программист еще не закончил писать его. Вы можете использовать функцию-заполнитель, чтобы вернуть фиктивное значение, чтобы вы могли продолжить свою часть кода. –

+0

@EugeneSh. Я имею в виду держатель места для чего ??? – foxtrot9

ответ

1

Функция, которая ничего не делает (пока), является индикатором того, что что-то должно быть сделано, но еще не реализовано.

0

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

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

1

Посмотрите на идиомы программирования, такие как «Скелет», «фиктивный код», «макет объектов» и т. Д. Это очень распространенная техника, которая позволяет протестировать всю архитектуру вашей программы, не выполняя каждую деталь.

Предположим, у вас есть приложение, которое может сохранять результаты в файле, вызывая функцию save(), вы хотели бы иметь возможность протестировать приложение без необходимости действительно сохранять результаты в файл. Таким образом, функция save() может быть в первом приближении пустым! Очень часто пишут как (псевдокод здесь):

, чтобы иметь возможность отслеживать звонки.

0

Вы уже получили ответ (ов), а просто остановиться на почему части, позвольте мне добавить свои два цента.

Если вы пытаетесь использовать функцию (вызова функции), которая не имеет определение, linker will throw undefined reference error, потому что он не будет в состоянии в состоянии найти фактическое определение функции в любом месте данного файла объекта (ов) для ссылки.

Так, иногда в фазе развития, когда необходимо вызвать API, который еще быть реализованы (или не доступны до времени), фиктивный определение добавлена ​​функция, которая

  • либо не делает ничего значимого
  • или возвращает Фиксированное значение

только для компиляции и проверки (тест) на работу функции вызывающего абонента (модуля). Без определения фиктивной функции код для вызывающей функции выдает ошибку.

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