exponenta event banner

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

Внешний объект или функция объявляются один раз в одном и только в одном файле

Описание

Эта проверка деактивируется в анализе Polyspace ® по умолчанию в качестве кода. См. раздел Шашки, деактивированные в Polyspace как анализ кода по умолчанию (Polyspace Bug Finder Access).

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

Внешний объект или функция объявляются один раз в одном и только в одном файле.

Объяснение

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

  • Объявление и определение.

  • Объявления в различных единицах перевода.

Правило применяет практику объявления внешних объектов или функций в файлах заголовков.

Внедрение Polyspace

Средство проверки правил проверяет только явное extern объявления (предварительные определения игнорируются). Средство проверки помечает переменные или объявленные функции extern в файле без заголовка.

Polyspace Bug Finder™ и Polyspace Code Prover™ проверки этого правила кодирования по-разному. Анализ может дать различные результаты.

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

  • Объект object_name имеет внешние объявления в нескольких файлах.

  • Функция function_name имеет внешние объявления в нескольких файлах.

Поиск неисправностей

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

Примеры

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

Файл заголовка:

/* file.h */
extern int var;
extern void func1(void);   /* Compliant */

Исходный файл:

/* file.c */
#include "file.h"

extern void func2(void);   /* Non compliant */

/* Definitions */
int var = 0;
void func1(void) {}
В этом примере объявление внешней функции func2 не соответствует, так как встречается в файле без заголовка. Другие объявления внешних объектов и функций содержатся в файле заголовка и соответствуют этому правилу.

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

Группа: Объявления и определения
Категория: Обязательно
СМЖЛ Категория: Консультативные услуги
Представлен в R2014b