Правило 18.8 MISRA C:2012

Типы массива переменной длины не должны использоваться

Описание

Управляйте определением

Типы массива переменной длины не должны использоваться.

Объяснение

Когда размер массива, объявленного в блоке или прототипе функции, не является целочисленным константным выражением, вы задаете переменные типы массива. Переменные типы массива обычно реализуются как переменный объект размера, хранивший на стеке. Используя тип переменной массивы могут лишить возможности решать статистически, что объем памяти для стека требует.

Если размер массива переменной длины отрицателен или нуль, поведение не определено.

Если массив переменной длины должен быть совместим с другим типом массива, то размер типов массива должен быть идентичными и положительными целыми числами. Если ваш массив не удовлетворяет эти требования, поведение не определено.

Если вы используете тип массива переменной длины в sizeof, сомнительно, оценен ли размер массивов или нет.

Обменивайтесь сообщениями в отчете

Типы массива переменной длины не должны использоваться.

Поиск и устранение проблем

Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.

Проверяйте информацию

Группа: указатели и массивы
Категория: необходимый
Категория AGC: необходимый
Язык: C99