Подпрограмма-заглушка может быть одной из (по крайней мере) двух вещей.
Во-первых, это может быть подпрограмма-заполнитель, которую вы быстро разработаете для проверки подпрограммы более высокого уровня с намерениемзамены реальной версии позже.Обычно это используется при нисходящей разработке (сначала кодирование верхних уровней, затем переход к более подробным вещам) и может быть простым:
int getCount (void) { return 7; } // just return fixed value for testing.
или чуть более сложным:
// Cycle through values for some variety.
int getCount (void) {
int retvals[] = {2,7,1,8,2,8,1,8,2,8,4,5,9};
static int pos = -1;
pos = (pos + 1) % (sizeof (retvals) / sizeof (*retvals));
return retvals[pos];
}
Конечно, как только заглушка становится достаточно сложной, вы можете просто реализовать реальную вещь: -)
Во-вторых, она обычно используется в средах удаленного вызова процедур (RPC),Заглушка там используется для сбора данных на одном конце и передачи их на сервер на другом конце.
RPC должен создать функции заглушки для клиента и сервера.Это очень похоже на прототип функции в C, но конечный результат немного отличается, например:
+----------------+
| Client |
| +----------+ | +---------------+
| | main | | | Server |
| |----------| | | +----------+ |
| | stub_cli |------->| stub_svr | |
| +----------+ | | |----------| |
+----------------+ | | function | |
| +----------+ |
+---------------+
В этом примере вместо вызова function
в той же программе, main
вызывает клиентаФункция-заглушка (с тем же прототипом, что и function
), которая отвечает за упаковку информации и передачу ее по проводам другому процессу.Это может быть та же или другая машина, это не имеет значения - одно из преимуществ RPC - возможность перемещать серверы по желанию.
На сервере есть «слушатель»процесс, который получит эту информацию и передаст ее на сервер.Заглушка сервера получает информацию, распаковывает ее и передает ее в реальную функцию.
Реальная функция затем делает то, что ей нужно, и возвращается к заглушке сервера, которая может упаковать возвращаемую информацию и передать ее обратнозаглушка клиента.
Затем заглушка клиента распаковывает ее и передает обратно main
.