MISRA C:2012 Rule 8.11

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

Описание

Определение правила

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

Объяснение

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

Реализация Polyspace

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

Дополнительное сообщение в отчете

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

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

Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».

Примеры

расширить все

#include <stdint.h>

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

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

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

Группа: Декларации и определения
Категория: Консультационные
Категория СМЖЛ: Консультационная
Введенный в R2014b