Данное диагностическое правило основано на руководстве MISRA (Motor Industry Software Reliability Association) по разработке программного обеспечения.
Это правило актуально только для С. У любого объекта или функции с внешним связыванием должно быть ровно одно объявление.
Рассмотрим пример нарушения этого правила:
/* lib1.h */ extern int32_t var; // Declaration /* lib2.h */ extern int32_t var; // Declaration /* some.cpp */ #include "lib1.h" #include "lib2.h"
В данном примере переменная 'var' объявлена дважды: в 'lib1.h' и 'lib2.h'.
Здесь возможно несколько вариантов исправления:
/* lib.h */ extern int32_t var; // Declaration /* lib1.h */ #include "lib.h" /* lib2.h */ #include "lib.h" /* some.cpp */ #include "lib1.h" #include "lib2.h"
Данная диагностика классифицируется как:
|