Укажите, что идентификатор раньше объявлял вектор 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);