Укажите идентификатор, используемый для объявления вектора DWork в коде, созданном из связанной S-функции
char_T *ssSetDWorkRTWIdentifier(SimStruct *S, int_T vector, char_T *id)
SSimStruct представляет S-функциональный блок.
vectorИндекс рабочего вектора, где индекс является одним из 0, 1, 2, ...
ssGetNumDWork(S)-1.
idИдентификатор вектора DWork. Это должно указывать на постоянную память.
Указатель (char_T *) на идентификатор Coder™ Simulink ®, введенный в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);