Укажите идентификатор, используемый для объявления вектора 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);