MISRA C++:2008 Rule 3-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 задан в обоих файлах.

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

Группа: фундаментальные понятия
Категория: необходимый
Введенный в R2013b