MISRA C:2012 Rule 8.10

Подставляемая функция должна быть объявлена со статическим классом памяти

Описание

Примечание

Используйте Bug Finder вместо Code Prover для проверки правил кодирования. Поддержка кодирования правил, регистрируясь в Code Prover будет удалена в будущем релизе. См. Вопросы совместимости.

Управляйте определением

Подставляемая функция должна быть объявлена со статическим классом памяти.

Объяснение

Если вы вызываете подставляемую функцию, которая объявлена с внешним рычажным устройством, но не задана в том же модуле перевода, функциональная сила не встраиваются. Вы не можете видеть сокращение во время выполнения, которое вы ожидаете от встраивания.

Если вы хотите сделать подставляемую функцию доступной для нескольких модулей перевода, можно все еще задать ее с static спецификатор. В этом случае поместите определение в заголовочный файл. Включайте заголовочный файл во все файлы, где вы хотите встроенную функцию.

Реализация Polyspace

Средство проверки правила отмечает определения, которые содержат inline спецификатор без сопроводительного static спецификатор.

Поиск и устранение проблем

Если вы ожидаете нарушение правила, но не видите его, относитесь, чтобы Диагностировать, Почему Кодирующие Стандартные Нарушения Не Появляются как ожидалось.

Примеры

развернуть все

inline double mult(int val);
inline double mult(int val) {   /* Non compliant */
    return val * 2.0;
}

static inline double div(int val);
static inline double div(int val) {  /* Compliant */
    return val / 2.0;
}

В этом примере, определении mult несовместимо, потому что это встраивается без static спецификатор устройства хранения данных.

Проверяйте информацию

Группа: объявления и определения
Категория: необходимый
Категория AGC: необходимый

Вопросы совместимости

развернуть все

Не рекомендуемый запуск в R2021b

Введенный в R2014b