Укажите, что идентификатор раньше объявлял вектор DWork в коде, сгенерированном от связанной S-функции
char_T *ssSetDWorkRTWIdentifier(SimStruct *S, int_T vector, char_T *id)
SSimStruct, представляющий Блок 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);