MISRA C ++:2008 правил 3-1-2

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

Описание

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

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

Объяснение

Это - хорошая практика, чтобы поместить все объявления на уровне пространства имен.

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

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

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

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

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

Примеры

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

class A {
};

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

В этом примере объявления func и a находятся в области действия блока b1.

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

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

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

Введенный в R2013b