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

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

Описание

Примечание

Используйте Bug Finder вместо Code Prover для проверки правил кодирования. Поддержка кодирования правил, регистрируясь в Code Prover будет удалена в будущем релизе. См. Вопросы совместимости.

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

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

Объяснение

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

Реализация Polyspace

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

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

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

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

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

Если вы ожидаете нарушение правила, но не видите его, относитесь, чтобы Диагностировать, Почему Кодирующие Стандартные Нарушения Не Появляются как ожидалось.

Примеры

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

typedef int* intptr;

int* map;
extern intptr map; //Noncompliant

intptr table;
extern intptr table; //Compliant

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

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

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

Вопросы совместимости

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

Не рекомендуемый запуск в R2021b

Введенный в R2013b