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