AUTOSAR C++14 Rule M3-2-2

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

Описание

Эта проверка деактивирована в Polyspace по умолчанию® по мере анализа You Code. Смотрите Checkers Deactivated in Polyspace как You Code Default Analysis (Polyspace Bug Finder Access).

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

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

Объяснение

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

Реализация Polyspace

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

  • Неинстантированные шаблоны

  • Незакрытые static или extern функции

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

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

Поиск и устранение проблем

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

Примеры

расширить все

Этот пример использует два файла:

  • 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. Однако определения изменяют порядок полей структуры.

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

Группа: Основные концепции
Категория: Необходимый, Автоматизированный
Введенный в R2019a