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

V2666. MISRA. All declarations of an object with an explicit alignment specification should specify the same alignment.

18 Ноя 2025

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

Правило актуально только для С.

Если любое определение объекта содержит явный спецификатор выравнивания (alignas), то все другие объявления того же объекта должны быть определены с таким же выравниванием.

В случае, если выравнивания нет, ни одно из объявлений этого объекта не должно его указывать.

Если в разных файлах исходного кода объявления одного и того же объекта имеют разные спецификаторы выравнивания, то поведение программы не определено (С11 пункт 6.7.5.6).

Рассмотрим пример:

//header.h
extern alignas(16) int32_t var;

//file.c
alignas(8)         int32_t var;

В заголовочном файле header.h объявляется переменная var с выравниванием 16 байт. Далее в исходном файле есть определение этой переменной, но с другим выравниванием. Поведение такой программы не определено.

Исправленный пример:

//header.h
extern alignas(16) int32_t var;

//file.c
alignas(16)        int32_t var;

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

  • MISRA-C-2023-8.15