function()
|
|
конструкция языка GNU C реализующая идею процедурного программирования |
|
СИНТАКСИС
|
|
T1 function( T2 arg1, ..., Tn argN );
|
|
T function( void );
|
|
void function( T2 arg1, ..., Tn argN );
|
|
void function( void );
|
|
ОПИСАНИЕ
|
|
Функция вида function() относится к конструкции языка программирования GNU C позволяющей выделять фрагмент (подпрограмму) кода в программе для обращения (вызова) к нему из любой её точки. Функция выполняет логически связанные операции над переданными ей с использованием стека параметров T arg1, ..., T argN и возвращает результат их обработки в ту точку кода программы откуда она была вызвана.
T1 function ( T2 arg1, ..., Tn argN )
{
T1 retval;
/* Алгоритм обработки аргументов и формирование возвращаемого значения */
return retval;
}
Функция вида function_retval_only(), у которой аргументы в объявлении отсутствуют, как правило в качестве данных на входе, использует результат выполнения вызванных внутри её других функций такого же типа, и/или рекурсивно самой функции, и/или объявленных в коде программы переменных общего доступа, как переменная common_var.
T2 common_var;
. . .
T1 function_retval_only( void )
{
T1 retval = (T1)common_var;
/* Алгоритм обработки retval */
return retval;
}
Функция вида function_without_all (), у которой не предусмотрен возврат значений на выходе, может использовать так же для этого переменные общего доступа, как переменная common_var, или модифицировать их в соответствии c реализуемым в ней алгоритмом.
T2 common_var;
. . .
void function_without_all ( void )
{
T1 handl_val = (T1)common_var;
T2 hand2_val = (T2)function_retval_only ();
/* Алгоритм обработки handl_val и hand2_val*/
common_var = (T2)handl_val;
}
| |
ОГРАНИЧЕНИЯ
|
|
При использовании функций в языке программирования GNU C нужно помнить о некоторых ограничениях, заключающиеся в том, что нельзя объявлять более чем 127 аргументов в определении функции и её декларации прототипа.
При объявлении прототипа функции нужно помнить, что в рамках одной программы и/или одной трансляции файла исходного кода можно использовать одну функцию с одним уникальным именем. Для внешнего использования функции следует объявлять в начале её прототипа спецификатор класса памяти extern в том подлежащем трансляции файле исходного кода откуда планируется её вызывать. При локальном использовании, в рамках одной трансляции файла исходного кода, в начале декларации функции и её прототипа указывается спецификатор класса памяти static.
Рис.1
Ограничение к числовым и вещественным типам предъявляются в соответствие с лимитами указанными в заголовочных файлах исходного кода <limits.h> и <float.h>, а так же дополнительно в <linux/limits.h>, накладываемых ограничений ядром ОC GNU/Linux.
|
|