Вебинар: Стратегия без иллюзий: как превращать цели в результаты - 19.08
Данное диагностическое правило основано на руководстве MISRA (Motor Industry Software Reliability Association) по разработке программного обеспечения.
Это правило актуально только для С. Язык C имеет специальный синтаксис инициализирующих выражений, называемый designated initializer. Он позволяет инициализировать элементы массива или структуры в произвольном порядке.
Например, можно инициализировать конкретные элементы массива:
int arr[4] = {
[1] = 1,
[3] = 2,
};
Этот синтаксис работает и для структур:
struct point
{
int x;
int y;
};
struct point pt1 = {
.x = 1,
.y = 1,
};
Однако при его использовании можно допустить ошибку и инициализировать один и тот же элемент дважды:
int arr[4] = {
[3] = 1,
[3] = 2,
};
struct point pt1 = {
.x = 1,
.x = 1,
};
MISRA запрещает данную конструкцию, т.к. стандарт языка не определяет, должны ли проявляться побочные эффекты в данной ситуации или нет. Скорее всего, такая ситуация возникла из-за опечатки.
Диагностическое правило классифицируется как:
|
Была ли полезна эта страница документации?
Мы ответим вам на:
Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок: