exponenta event banner

MISRA C:2012 Правило 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