# V2580. MISRA. The 'restrict' specifier should not be used.

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

Это правило актуально только для C. Запрещено использовать спецификатор 'restrict' в декларациях переменных, формальных параметров функций и полей структур/объединений. Несмотря на то, что компилятор может сгенерировать более оптимизированный код, это может привести к ошибкам, если два и более указателей ссылаются на одну и ту же область памяти.

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

    void my_memcpy(void * restrict dest,
                   const void * restrict src,
                   size_t bytes)
    {
      // ...
    }

    typedef struct
    {
       void * restrict m_field;
    } MyStruct;

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

MISRA-C-2012-8.14 MISRA-C-2023-8.14