exponenta event banner

MISRA C++: 2008 Правило 3-2-2

Правило единого определения не должно нарушаться

Описание

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

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

Правило единого определения не должно нарушаться.

Объяснение

Нарушения правила одного определения приводят к неопределенному поведению.

Внедрение Polyspace

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

  • Неподтвержденные шаблоны

  • Неуместный static или extern функции

  • Неустановленные и неопределенные локальные функции

  • Неиспользуемые типы и переменные

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

Правило единого определения не должно нарушаться.

Объявление класса className нарушает правило одного определения:

конфликтует с другим объявлением (fileName lineNumber).

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

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

Примеры

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

В этом примере используются два файла:

  • file1.cpp:

    typedef struct S //Noncompliant
    {
       int x;
       int y;
    }S; 
    void foo(S& s){
    //...
    } 
  • file2.cpp:

    typedef struct S 
    {
       int y;
       int x;
    }S ; 
    void bar(S& s){
    //...
    }

В этом примере оба file1.cpp и file2.cpp определить структуру, S. Однако определения изменяют порядок полей структуры.

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

Группа: Основные понятия
Категория: Обязательно
Представлен в R2013b