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

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

Описание

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

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

Объяснение

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

Обменивайтесь сообщениями в отчете

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

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

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

Примеры

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

Этот пример использует два файла:

  • decls.h:

    extern int x;
  • file.cpp:

    #include "decls.h"
    
    int x = 0;
    int y = 0; //Noncompliant
    static int z = 0;

В этом примере, переменной x объявляется в заголовочном файле, но переменной y не. Переменная z также не объявляется в заголовочном файле, но он объявляется с static спецификатор и не имеет внешнего рычажного устройства.

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

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

Введенный в R2013b