MISRA C++:2008 Rule 3-9-1

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

Описание

Управляйте определением

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

Объяснение

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

Реализация Polyspace

Средство проверки правила сравнивает текущее объявление с последним замеченным объявлением.

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

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

Переменный varName не совместимо с предыдущим объявлением.

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

Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.

Примеры

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

typedef int* intptr;

int* map;
extern intptr map; //Noncompliant

intptr table;
extern intptr table; //Compliant

В этом примере, переменной map объявляется дважды. Второе объявление использует typedef который решает к типу первого объявления. Из-за typedef, второе объявление не является лексемой для лексемы, идентичной первому.

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

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

Введенный в R2013b