По умолчанию генератор кода использует внутреннюю эвристику, чтобы определить, встроить ли сгенерированный код для функций состояния. Эвристика учитывает порог встраивания. Когда код растет и уменьшается в размере, сгенерированный код для функций состояния может быть непредсказуемым.
Если ваша модель включает объекты Stateflow®, и у вас есть строгие требования для трассируемости между сгенерированным кодом и соответствующими функциями состояния, можно заменить поведение по умолчанию. Используйте свойство состояний Function Inline Option
явным образом обеспечить или предотвратить встраивание функций состояния.
Если вы обеспечиваете встраивание для состояния, генератор кода встраивает код для состояний активности в родительскую функцию. Родительская функция содержит код для выполнения состояний активности, внешних переходов и блок-схем. Это не включает код для пустых состояний активности.
Если вы предотвращаете встраивание для состояния, генератор кода производит эти статические функции для нечто состояния.
Функция | Описание |
---|---|
| Отмечает |
| Пути к значению по умолчанию вызовов. |
| Выполняет блок-схемы, которые происходят, когда внутренний переход и переход по умолчанию достигают того же соединения в состоянии. Генератор кода производит эту функцию только, когда блок-схема является достаточно комплексной, чтобы превысить порог встраивания. В сгенерированном коде программное обеспечение Stateflow вызывает эту функцию от обоих |
| Проверки на допустимые внешние переходы и если ни один, выполняют во время действий. |
| Выполняет выходные действия и отмечает |
| Выполняет выходные действия дочерних подсостояний и затем выходит |
Предположим, что следующий график находится в модели M
.
Если вы предотвращаете встраивание для A
состояния, генератор кода производит этот код.
static void M_inner_default_A(void); static void M_exit_atomic_A(void); static void M_A(void); static void M_enter_atomic_A(void); static void M_enter_internal_A(void);
Установить свойство встраивания функции для состояния:
Щелкните правой кнопкой в состоянии и, из контекстного меню, выберите Properties.
Диалоговое окно Свойств состояний открывается.
Для свойства Function Inline Option выберите одно из этих значений.
Значение | Поведение |
---|---|
Inline | Встраивание сил функций состояния в родительскую функцию, пока функция не является частью рекурсии. Смотрите то, Что Происходит Когда Вы Встраивание Силы. |
Function | Предотвращает встраивание функций состояния. Генерирует до шести статических функций для состояния. Смотрите то, Что Происходит, Когда Вы Предотвращаете Встраивание. |
Auto | Использует внутреннюю эвристику, чтобы определить, встроить ли функции состояния. |
Нажмите Apply.
К | Функция множества встроенное свойство опции к |
---|---|
Сгенерируйте отдельную функцию для каждого действия состояния и отдельную функцию для каждого действия ее подсостояний | Function для состояния и каждого подсостояния |
Сгенерируйте отдельную функцию для каждого действия состояния, но включайте код для связанного действия его подсостояний | Function для состояния и Inline для каждого подсостояния |