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