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

Функции не должны быть объявлены в блочных возможностях

Описание

Определение правила

Функции не должны быть объявлены на блоке возможностей.

Объяснение

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

Кроме того, если вы объявляете функцию в возможности, часто не ясно, является ли оператор объявлением функции или объявлением объекта с вызовом конструктора.

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

Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».

Примеры

расширить все

class A {
};

void b1() {
    void func(); //Noncompliant
    A a();   //Noncompliant
}

В этом примере объявления func и a находятся в блочных возможностях b1.

Второе объявление функции может вызвать путаницу, потому что не ясно, a является функцией, которая возвращает объект типа A или a сам является объектом типа A.

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

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