В этом примере показано, как использовать блок C Caller для вызова унаследованных функций C, реализующих N-мерный табличный поиск.
В этом примере унаследованные функции C определены в lookupTable.h, и реализовано в directLookupTableND.c. Определения типов, использованные в этом примере, можно найти в your_types.h.
Чтобы разрешить вызов функций C из блока C Function, в модели укажите файл заголовка и исходный файл на панели Configuration Parameters > Simulation Target. Прототип устаревшей функции, вызываемой в этом примере:
FLT directLookupTableND(const FLT *tableND, const UINT32 nbDims, const UINT32 *tableDims, const UINT32 *tableIdx)
где FLT является определением типа для типа с плавающей запятой, и UINT32 - определение типа для беззнакового 32-разрядного целого числа.
const FLT *tableND - Таблица
const UINT32 nbDims - Размерность таблицы
const UINT32 *tableDims - Размер таблицы
const UINT32 *tableIdx - Табличный индекс
В блоке C Caller tableND и tableDims сопоставляются с параметрами блока вызывающего абонента C, nbDims является постоянной блока, и tableIdx является входом в блок. Значение, возвращаемое унаследованной функцией C, является выводом блока.
model = 'slexCCallerLookupTable'; open_system(model); sim(model); slcc('clearCustomCodeModules');
