Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
>
V2607. MISRA. Inline functions...
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V2607. MISRA. Inline functions should be declared with the static storage class.

09 Авг 2021

Данное диагностическое правило основано на руководстве MISRA (Motor Industry Software Reliability Association) по разработке программного обеспечения.

Это правило актуально только для C. Функции с квалификатором 'inline' должны быть объявлены с квалификатором 'static'.

Если inline-функция объявлена в некоторой единице трансляции и имеет 'external linkage', но не определена в этой единице трансляции, то это приведет к неопределенному поведению.

Проблема может возникнуть, даже если 'inline'-функция, имеющая 'external linkage', объявлена и вызывается в одной единице трансляции. Такой вызов является неуточненным поведением. Компилятор может как сгенерировать вызов функции, так и встроить тело этой функции на место вызова. Несмотря на то, что это не повлияет на поведение вызванной функции, это может повлиять на время выполнения программы, и, как следствие, повлиять на программу во время ее исполнения.

Пример кода, на который анализатор выдаст предупреждение:

#include <stdint.h>

extern inline int64_t sum(int64_t lhs, int64_t rhs);

extern inline int64_t sum(int64_t lhs, int64_t rhs)
{
  return lhs + rhs; 
};

Данная диагностика классифицируется как:

  • MISRA-C-2012-8.10
  • MISRA-C-2023-8.10