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

Когда массив с внешней связью объявляется, ее размер должен быть явным образом задан

Описание

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

Когда массив с внешней связью объявляется, ее размер должен быть явным образом задан.

Объяснение

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

Реализация Polyspace

Средство проверки правила отмечает массивы, объявленные с помощью спецификатора extern, если объявление явным образом не задает размер массивов.

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

Размер массива array_name должен быть явным образом утвержден. Когда массив с внешней связью объявляется, ее размер должен быть явным образом задан.

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

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

Примеры

развернуть все

extern int32_t array1[10];    /*  Compliant  */
extern int32_t array2[];      /*  Non-compliant  */

В этом примере два массива объявляются array1 и array2. array1 имеет внешнюю связь (ключевое слово extern) и размер 10. array2 также имеет внешнюю связь, но никакой заданный размер. array2 несовместим, потому что для массивов с внешней связью, необходимо явным образом задать размер.

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

Группа: объявления и определения
Категория: консультация
Категория AGC: консультация
Язык: C90, C99

Введенный в R2014b