MISRA C++:2008 Rule 3-2-4

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

Описание

Эта проверка деактивирована в Polyspace по умолчанию® по мере анализа You Code. Смотрите Checkers Deactivated in Polyspace как You Code Default Analysis (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 определяется в обоих файлах.

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

Группа: Основные концепции
Категория: Требуемая
Введенный в R2013b