Данное диагностическое правило основано на руководстве 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) {
// ....
}
Данная диагностика классифицируется как:
|