MISRA C:2012 Rule 8.10

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

Описание

Определение правила

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

Объяснение

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

Если требуется сделать встроенную функцию доступной для нескольких модулей перевода, ее все еще можно определить с помощью 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: Требуется
Введенный в R2014b