К оглавлению

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.
  
 

К оглавлению



Сайт создан в системе uCoz