Укажите идентификатор, используемый для объявления вектора DWork в коде, сгенерированном из связанной S-функции
char_T *ssSetDWorkRTWIdentifier(SimStruct *S, int_T vector, char_T *id)
S
SimStruct, представляющий блок S-Function.
vector
Индекс рабочего вектора, где индекс является одним из 0
, 1
, 2
, ...
ssGetNumDWork(S)-1
.
id
Идентификатор вектора DWork. Это должно указывать на постоянную память.
Указатель (char_T *) на Simulink® Coder™ идентификатор, введенный в id
.
Задает id
как идентификатор, используемый в коде, сгенерированном продуктом Simulink Coder, чтобы объявить вектор DWork, заданный как vector
. Для получения дополнительной информации об использовании векторов DWork, смотрите Как использовать векторы DWork.
Эта функция должна вызываться только из mdlInitializeSizes
или mdlSetWorkWidths
функций.
C, C++
Смотрите S-функцию sfun_rtwdwork.c
используется в sfcndemo_sfun_rtwdwork
.
Следующий фрагмент mdlInitializeSizes
метод инициализирует вектор DWork и все связанные с ним свойства генерации кода.
ssSetNumDWork(S, 1); ssSetDWorkWidth(S, 0, 1); ssSetDWorkDataType(S, 0, SS_DOUBLE); /* Identifier; free any old setting and update */ id = ssGetDWorkRTWIdentifier(S, 0); if (id != NULL) { free(id); } id = malloc(80); mxGetString(ID_PARAM(S), id, 80); ssSetDWorkRTWIdentifier(S, 0, id);
Следующий фрагмент mdlTerminate
метод освобождает выделенную для идентификатора память, чтобы предотвратить утечки памяти.
char* id; char* tq; /* Identifier; free any old setting and update */ id = ssGetDWorkRTWIdentifier(S, 0); if (id != NULL) { free(id); } ssSetDWorkRTWIdentifier(S, 0, NULL);