Unicorn with delicious cookie
Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
>
V2615. MISRA. A compatible...
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V2615. MISRA. A compatible declaration should be visible when an object or function with external linkage is defined.

12 Окт 2021

Данное диагностическое правило основано на руководстве MISRA (Motor Industry Software Reliability Association) по разработке программного обеспечения.

Это правило актуально только для С. Не рекомендуется определять объекты и/или функции с внешним связыванием (external linkage) без предварительной декларации.

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

Например, следующий код определяет внешнюю переменную и функцию без предварительной декларации:

int foo;
void bar(void) {
  // ....
}

Декларации стоит поместить в заголовочный файл. Также стоит включить заголовочный файл в компилируемый:

// file.h
extern int foo;
extern void bar(void);

// file.c
#include "file.h"
int foo;
void bar(void) {
  // ....
}

Для объектов и функций с внутренним связыванием (internal linkage) предварительная декларация не нужна:

static int baz;
static void qux(void) {
  // ....
}

Данная диагностика классифицируется как:

  • MISRA-C-8.4