ISaGRAF. Version 3.4


“C” функции - часть 5


Функция объявления добавляется в исходный “C” код функции. Эта функция вызывается только один раз, когда приложение стартует и сообщает менеджеру В/В имя, которое соответствует реализованной функции. Вот стандартный формат такой функции объявления:

UFP uspdef_xxx (char *name)

{

             strcpy (name, "XXX");          /* gives the name of the function */

             return (USP_xxx);                    /* returns the implementation function */

}

/* (xxx is the name of the function) */

Имя функции, использующееся оператором strcpy, должно быть написано заглавными буквами. Оно должно быть написано маленькими буквами в реализации функции и в имени функции объявления. Использование префиксов ”USP_” и “uspdef_” для реализации функции и определения функции позволяет пользователю именовать функции ключевыми словами языка “C” или именами существующих функций из “C” библиотек ISaGRAF.

В функцию объявления могут быть добавлены другие операторы для того, чтобы реализовать специфические операции инициализации связанные с этой функцией. Система ISaGRAF гарантирует, что эта функция вызывается только однажды при запуске приложения. Функция объявления вызывается для любой интегрированной функции, даже если она не используется в приложении ISaGRAF.  Ядро  ISaGRAF выдает ошибку, если в приложении используется не реализованная функция.

Прежде чем линковать новые функции с ядром, пользователь должен написать другой файл с исходным текстом, под именем “GRUS0LIB.C” и вставить его с сохраненной функцией в список файлов для линкера. “GRUS0LIB.C” содержит только массив функций объявления. Этот массив читается во время инициализации приложения, для того чтобы создать динамические связи с функциями написанными на “C”. Вот пример такого файла:

/* Файл "GRUS0LIB.c" - Пример using trigonometric functions */

 

#include <tasy0def.h>                       /* required for types definition */

 

extern UFP uspdef_fc1 (char *name);             /* declaration functions */




- Начало -  - Назад -  - Вперед -