Имя OF
может быть сокращением для Old function declaration
.
В старые времена 80-х и даже раньше типичное объявление для этой функции выглядело так:
fill_win32_filefunc();
Вот и все.Нет явного возвращаемого типа, нет объявленных параметров.Тип возвращаемого значения - int
по умолчанию, и параметры не имеют значения, так как вызывающая сторона (надеюсь) все равно передаст значения правильных типов данных.
Более поздние версии представили тип void
поэтому объявление может выглядеть так:
void fill_win32_filefunc();
И когда вышел ANSI C89, он ввел объявление параметров функции.Теперь хорошая декларация выглядела так:
void fill_win32_filefunc(zlib_filefunc_def* pzlib_filefunc_def);
В начале 1989 года было много кода, который должен был объединить эти два стиля.Поэтому был изобретен макрос OF
(или иногда _P
или с другим именем).Его определение обычно таково:
#if PRE_ANSI_C89
# define OF(args) ()
#else
# define OF(args) args
#endif
Исходя из этого, обе версии генерируются легко.
В настоящее время этот хак больше не нужен, за исключением очень очень старых компиляторов.