exponenta event banner

Правило AUTOSAR C++ 14 M3-2-4

Идентификатор с внешней связью должен иметь ровно одно определение

Описание

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

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

Идентификатор с внешней связью должен иметь ровно одно определение.

Объяснение

Если идентификатор имеет несколько определений или не имеет определений, это может привести к неопределенному поведению.

Внедрение Polyspace

Средство проверки не создается для неиспользуемого кода, например

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

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

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

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

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

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

Примеры

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

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

  • file1.cpp:

    typedef signed   int          int32_t;
    
    namespace NS {
    	extern int32_t a;
    
    	void foo(){
    		a = 0;
    		
    	}
    }; 
  • file2.cpp:

    typedef signed   int          int32_t;
    typedef signed   long long         int64_t;
    
    namespace NS {
    	extern int64_t a; //Noncompliant
    	void bar(){
    		++a;
    		
    	}
    };

Тот же идентификатор a определяется в обоих файлах.

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

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